第三章 ARM微处理器指令集.ppt

第三章 ARM微处理器指令集

4-6-3 汇编语言程序 汇编语言程序示例 2 4-6-3 汇编语言程序 汇编语言程序示例 3 4-6-3 汇编语言程序 汇编语言程序示例 4 * 阶段小结 ARM汇编所支持的伪指令 汇编语言的语句格式 汇编语言的程序结构和调用 Page */40 阶段练习 1. ARM处理器有哪几种寻址方式? 2. 分别说明下面的指令属于那种寻址方式? MOV R1,R2 SUB R0,R1,R2 3. 说明下列指令的含义。 B WAITA BL DELAY BX R0 MVN R1,R2 ADDS R1,R1,#1 MUL R1,R2,R3 本章总结 跳转指令 数据处理指令 ARM指令实验 ARM指令的 寻址方式 ARM微处理器 指令系统 ARM微处理器的 指令集概述 ARM指令集 Thumb指令及应用 PSR访问指令 加载/存储指令 乘法与乘加指令 批量数据加载/存储指令 数据交换指令 移位指令 协处理指令 异常产生指令 Page */40 实验 实验一:集成开发环境实验 任务1:熟悉ADS开发环境 任务2:建立一个基本的工程exp1_prj。 任务3:设置并编译工程exp1_prj。 任务4 调试工程exp1_prj。 实验二:ARM汇编指令实验 任务1:掌握在ADS集成开发环境中编写汇编语言的方法。 任务2:掌握汇编语言的程序结构。 任务3:掌握数据加载指令和移位指令 Page */40 实验 实验三:ARM汇编指令实验二 任务1:熟悉ADS开发环境 任务2:建立一个基本的工程exp1_prj。 任务3:掌握指令的条件执行以及LDR/STR指令对存储器的访问。 实验四: ARM汇编指令实验三 任务1:掌握ARM乘法指令和堆栈指令的使用方法。 任务2:了解子程序的编写及调用。 Page */40 实验 实验五:ARM汇编指令实验四 任务1:掌握使用ARM汇编语言实现结构化编程的方法。 实验六: ARM工作模式实验 任务1:掌握如何使用MRS/MSR指令实现ARM工作模式切换的方法。 任务2:了解在各个工作模式下的寄存器。 Page */40 实验1 注意事项 提示1: 如果命令的“--help”选项显示的命令帮助信息很长,可以实用more命令进行分页显示 提示2: 在挂载U盘中的文件系统之前应使用“fdisk -l”命令查看U盘设备是否已经被Linux系统正确识别 * 1)使用任意一个程序编辑器,比如UltraEdit等编辑软件输入如下的程序,并保存为ARMexp1.s 2)在汇编语言程序中,用AREA伪指令定义一个段,并说明所定义段的相关属性,本例定义一个名为ARMexp1的代码段,属性为只读。ENTRY伪指令标识程序的入口点,接下来为指令序列,程序的末尾为END伪指令,该伪指令告诉编译器源文件的结束,每一个汇编程序段都必须有一条END伪指令,指示代码段的结束。 start和stop是程序标号。stop后面的3条指令的作用是结束应用程序的执行,把控制权交给debug调试器。在后面的实验中,我们只需要修改start和stop之间的程序就可以了。 若相等,Z=1;否则,z=0。若产生借位,C=0;否则C=1。 若产生进位,C=1;否则C=0。 对于加法和减法指令,当发生带符号溢出时,V置1;对于其它费加法和减法指令,V通常不变。 R13:SP R14:LR R15:PC R16:CPSR R17:SPSR ,正在逐渐改变着传统的工业生产和服务方式 散转程序是分支程序的一种, 它可根据运算结果或用户输入数据将程序转入不同的分支. 前索引偏移指令:LDR R0,[R1,#4] 若Rn是R15则不能使用! 其中: Rd 加载/存储寄存器中的一个,另一个是R(d+1)。Rd必须是偶数寄存器,且不是R14。 Rn 除非指令为零偏移,或不带写回的前索引,否则,Rn不允许与Rd和R(d+1)相同。 label label必须是在当前指令的上下252字节范围内。 例如: LDRD R6,[R11] ;R6←[R11],R7←[R11+4] STRD R4,[R9,#24] ;R4→[R9+24],R5→[R9+28] 4-6 汇编程序设计 由于高级编程语言隐藏了CPU执行指令的许多细节,因此在只关心系统所具有功能的系统中,采用高级语言编写程序更为合适。 CPU执行指令的细节差异会反应在系统的非功能特性上,例如系统程序的规模和运行速度。因此,掌握汇编语言程序设计对于嵌入式系统的设计者来说是非常必要的。 4-6 汇编程序设计 在ARM汇编语言源程序中有些特殊助记符,它们没有相对应的操作码或者机器码,通常称为伪指令,它们所完成的操作称为伪操作。伪指令在源程序中的作

文档评论(0)

1亿VIP精品文档

相关文档