嵌入式系统原理应用——实验二 ARM汇编指令实验1—简单数据搬移实验
【教学目标和要求】
学习嵌入式汇编程序的设计方法,完成实验中数据搬移的功能。
【主要仪器设备和药品】
(1)硬件:微机
(2)软件:ADS1.2
【实验要求】
(1)按照实验要求编写汇编语言源程序。
(2)对汇编源程序进行编译、汇编。
(3)对程序进行调试。
(4)观察程序运行结果。
【实验程序】
(1)汇编程序:
本程序步骤:
首先将45移入R0中,然后入栈,再将64移入R0,将45出栈到R1中,再使R0=R0+R1=109,最后将R0中的相加结果入栈。
1 | AREA Init,CODE,READONLY |
【实验结果】
(1)调试界面
运行结果:
图 1 实验2最终运行内存和寄存器结果
【练习题】
编写程序实现对一段数据的最大值最小值搜索,最大值存于 max 变量之中,最小值存于 min 变量之中。
提示: 数据的定义采用伪指令:DCD 来实现,如:
1 | DataBuf DCD 11,-2,35,47,96,63,128,-23 |
搜索最大值和最小值可以利用两个寄存器R1,R2来存放。用到的比较指令为CMP,用到的条件标识符小于为 LT,大于为 GT。
基本思路为:利用 R0 做基地址,将 R1,R2 分别存入第一个单元的内容,利用R3 做循环计数器,利用 R4 遍历读取第 2 至最后一个数据,如果 R1 的数据小于新读入的 R4 数据则将 R4 的内容存入 R1, 如果 R2 的内容大于 R4 的内容则将 R4 的内容存入R2。遍历完成之后,R1 将存放最大数据,R2 将存放最小数据。
汇编程序:
程序首先将DataBuf的首地址装载到R0中,再通过首地址将第一个数据装载到R1和R2中,以R3为循环计数器。通过不断的循环比较,将比较过程中得到的最大值放在R1中,最小值放在R2中,每一次循环R3中的值加1,当R3=8时,比较循环结束。
1 | AREA comp,CODE,READONLY |
运行结果:
图 2 实验2练习题运行结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 wen's Blog!