文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者关注公众号【AIShareLab】,回复 嵌入式 也可获取。
一、实验目的
通过实验掌握使用 LDB/STB,b等指令完成较为复杂的存储区访问和程序分支,学习使用条件码
二、实验环境
硬件:PC机
软件:ADS1.2 集成开发环境
三、实验内容
熟悉开发环境的使用并完成一块存储区的拷贝。
完成分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。
四、实验要求
- 在ADS下创建一个工程asmlab2,定义两个数据存储区Src和Dst,Src用于存放原字符串,Dst用于存放目的字符串。堆栈地址0x400,将变量原字符串的内容拷贝到目的字符串中,要能判断原字符串的结束符(0),并统计字符串中字符的个数。通过AXD查看寄存器和memory和寄存器中数据变化。
- 在指令后面加上适当注释,说明指令功能。
- 指出程序执行完成后各相关寄存器及存储器单元的具体内容。
五、实验完成情况:
1、实验源代码(含注释):
2、实验过程(含结果截图及相应文字解释):
定义两个数据存储区Src和Dst,Src用于存放原字符串,Dst用于存放目的字符串。堆栈地址0x400,将变量原字符串的内容拷贝到目的字符串中,要能判断原字符串的结束符(0),并统计字符串中字符的个数。通过AXD查看寄存器和memory和寄存器中数据变化。
通过存储器可见,内容正在逐渐地进行拷贝。过程如下:
直到拷贝过程结束,实验结束后存储单元中的内容如下:
相关寄存器中的具体内容如下所示:
练习题:
编写程序循环对R4~R11 进行累加8 次赋值,R4~R11 起始值为1~8,每次加操作后把 R4~R11 的内容放入SP 栈中,SP 初始设置为0x800。最后把R4~R11清空赋值为0。
提示:多字的加载与存储使用多寄存器寻址,使用的指令为LDM和STM。如:
编写实验代码如下:
实验初始时,寄存器中内容如下:
实验结束后,寄存器中的内容如下:
欢迎关注公众号【AIShareLab】,一起交流更多相关知识,前沿算法,Paper解读,项目源码,面经总结。