嵌入式(子程序调用实验程序及过程)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ARM子程序设计实验
7.1实验目的
①了解子程序编写及调用。
②掌握ARM乘法指令的使用方法
7.2 实验环境
①硬件:PC机
②软件:ADS1.2
7.3 实验内容
①MUL指令编写一个整数乘方的子程序。
②多寄存器传送指令(STMFD/LDMFD)运用和各种变址寻址模式的掌握。
③BL指令调用子程序计算X n
7.4 实验过程
(1)新建ARM工程exp7_1
启动ADS开发环境,选择File→New(Project)选项,使用ARM Executable Image工程模板创建一个工程exp7_1.
(2) 新建汇编程序文件exp7.s,并将其添加到工程exp7_1中
选择File→New(File)选项,新建汇编源程序文件exp7.s并添加到工程exp7_1中,exp7.s 源程序的参考代码如下:
X EQU 3
n EQU 4
AREA Lab1,CODE,READONL Y
ENTRY
START LDR SP,=0X30003F00
LDR R0,=X
LDR R1,=n
BL POW
halt b halt
POW STMFD SP!,{R1-R12,LR}
MOVS R2,R1
MOVEQ R0,#1
BEQ POW_END
MOV R1,R0
SUB R2,R2,#1
POW_L1 BL DO_MUL
SUBS R2,R2,#1
BNE POW_L1
POW_END LDMFD SP!,{R1-R12,PC}
DO_MUL MUL R0,R1,R0
MOV PC,LR
END
(3) 设置工程exp7的编译和链接选项
设置工程链接地址RO Base:0x3000000,RW Base:0x3003000, 设置调试地址:0x3000000
(4) 编译和链接工程
在工程exp7窗口中,选择Make工具按钮,编译和链接工程exp6_1,如果有错误提示,请检查修改程序中的语法错误,直到编译和链接通过。
(5)在AXD中加载映像文件
打开AXD Debugger,首先确认调试目标机是否设置为Armulator。选择Options→Configure Target(Choose Target)选项,确认ARMUL为选中状态。然后单击Configure按钮,打开ARMulator Configuration对话框,确认ARMulator模拟的处理器类型是ARM920T。
选择File→Load Image选项,载入工程exp7目录exp7\exp7_Data\DebugRel\下编译生成的映像文件exp7.axf
(6)调试准备
在AXD中,打开各个观察窗口,做调试准备。
①选择Processor Views→Registers选项,打开ARM寄存器显示窗口。
②选择Processor Views→Memory选项,打开ARM存储器显示窗口。
③选择Processor Views→Low Lever Symbols选项,打开标号及其地址显示窗口;
④选择Processor Views→Disassembly选项,打开反汇编显示窗口。
(7)单步运行程序
在AXD中,选择Execute→Step菜单项或按F10快捷键,或者使用调试工具条,单步运行程序,查看相关寄存器的值的变化情况。请把每一步的执行结果填入到下表中。执行File →Reload Current Image命令可以重新加载和运行当前映像文件。