文档介绍:ARM 嵌入式汇编语言程序设计重点实验目的?熟悉 ARM 微处理器指令系统; ?学****ARM 嵌入式汇编程序设计的编程重点。实验设备?硬件: PC 机。?软件: 集成开发环境, Windows 2000/XP/2003 。实验内容?了解多分支程序的编写方法; ?掌握 ARM 程序的运行和调试。实验原理(1) Arm 体系结构 3 种执行流程 1 顺序执行: 在正常执行过程中, 每执行一条 ARM 指令, 程序计数器(PC) 的值加 4 个字节; 每执行一条 Thumb 指令, 程序计数器(PC) 加2 个字节。整个过程按顺序执行。 2 跳转执行: 程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。 3 异常中断执行: 在进入异常中断处理程序时, 要保存被中断程序的执行现场, 从异常中断处理程序退出时,要恢复被中断程序的执行现场。(2 )跳转表多分支结构是程序中常见的结构, 若给出调用号来调用子程序, 一般用查表方法, 查到子程序的地址, 转到相应子程序。注意: 读跳转表时不要超过表的末端, 检查超限是必需的。例如: BL JUMPTABLE … JUMPTABLE ADR R1,SUBTABLE CMP R0,#SUBMAX ; 检查超限 BHI stop ; 若超限,则程序结束 LDR PC,[R1,R0,LSL #2]; 否则跳转到表中 s top MOV R0,#0X18 LDR R1 , =0X20026 SWI 0x 123456 SUBTABLE DCD SUB0 ; 子程序表入口 DCD SUB1 DCD SUB2 实验参考程序利用跳转表实现多分支转移。 AREA JUMP,CODE,READONLY; 设置本段程序的名称( JUMP )及属性 num EQU 2; 跳转表中的子程序个数 ENTRY ; 程序执行的入口点 START ; 设置 3 个参数,然后调用子程序 arithfunc ,进行算术运算 MOV R0,#0 MOV R1,#3 MOV R2,#2 BL arithfunc ; 调用子程序 arithfunc STOP ; 调用 angel_SWIreason_ReportException, 从应用程序中退出 MOV R0,#0X18 LDR R1,=0X20026 SWI 0x123456 arithfunc ; 子程序 arithfunc 入口点 CMP R0,#num; 判断选择子程序的参数是否在有效范围之内 MOVHS PC,LR ADR R3,JumpTable; 读取跳转表的基地址 LDR PC,[R3,R0,LSL #2]; 根据参数 R0 的值跳转到相应的子程序; 跳转表 JumpTable 中保存了各个子程序的地址, 在这里有两个子程序 DoAdd 和 DoSub ; 当参数 R0 为0 时上面的代码将选择 DoAdd ; 当参数 R0 为1 时上面的代码将选择 DoSub JumpTable DCD DoAdd DCD DoSub DoAdd ; 子程序 DoAdd 执行加法操作 ADD R0,R1,R2 MOV PC,LR DoSub 子程序 DoSub 执行