第4章ARM处理器指令概述.ppt
《第4章ARM处理器指令概述.ppt》由会员分享,可在线阅读,更多相关《第4章ARM处理器指令概述.ppt(44页珍藏版)》请在优知文库上搜索。
1、第4章ARM处理器指令概述 本章重点 常用ARM指令 ARM汇编程序编程实例 汇编与C语言混合编程 ADS集成开发环境 本章内容 4.1 ARM 微处理器的指令的分类与格式 4.2 ARM 指令的寻址方式 4.3 常用ARM指令 4.4 汇编语言的程序结构及在ADS环境下调试 4.5 汇编语言与 C/C+的混合编程 4.1 ARM 微处理器的指令的分类与格式 ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR
2、)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。4.2 ARM 指令的寻址方式 所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前ARM指令系统支持如下几种常见的寻址方式。4.2.1 立即寻址 立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下 指令:ADD R0,R0,1 ;R0R01 ADD R0,R0,0 x3f ;R0R00 x3f 在以上两条指令中,第二个源操作数即为立即数,要求以“”为前缀,对于以十六进制表示的立即数,还要求在“”
3、后加上“0 x”或“&”。4.2 ARM 指令的寻址方式 4.2.2 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令:ADD R0,R1,R2 ;R0R1R2 该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。4.2.3 寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:ADD R0,R1,R2 ;R0R1R2 LDR R0,R1 ;R0R1 STR R0,R1 ;R1R0 在第一条指令中,以寄存器 R2 的值作为操作
4、数的地址,在存储器中取得一个操作数后与 R1 相加,结果存入寄存器 R0 中。第二条指令将以 R1 的值为地址的存储器中的数据传送到 R0 中。第三条指令将 R0 的值传送到以 R1 的值为地址的存储器中。4.2 ARM 指令的寻址方式4.2.4 基址变址寻址 基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示:LDR R0,R1,#4 ;R0R14 LDR R0,R1,#4!;R0R14、R1R14 LDR R0,R1,#4 ;
5、R0R1、R1R14 LDR R0,R1,R2 ;R0R1R2 在第一条指令中,将寄存器 R1 的内容加上 4 形成操作数的有效地址,从而取得操作数存入寄存器 R0 中。在第二条指令中,将寄存器 R1 的内容加上 4 形成操作数的有效地址,从而取得操作数存入寄存器 R0 中,然后,R1 的内容自增 4 个字节。在第三条指令中,以寄存器 R1 的内容作为操作数的有效地址,从而取得操作数存入寄存器 R0中,然后,R1 的内容自增 4 个字节。在第四条指令中,将寄存器 R1 的内容加上寄存器 R2 的内容形成操作数的有效地址,从而取得操作数存入寄存器 R0 中。4.2 ARM 指令的寻址方式4.2.
6、5 多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多 16 个通用寄存器的值。以下指令:LDMIA R0,R1,R2,R3,R4 ;R1R0 ;R2R04 ;R3R08 ;R4R012该指令的后缀 IA 表示在每次执行完加载/存储操作后,R0 按字长度增加,因此,指令可将连续存储单元的值传送到 R1R4。4.2.6 相对寻址 与基址变址寻址方式相类似,相对寻址以程序计数器 PC 的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令 BL 采用了相对寻址方式:BL
7、 NEXT ;跳转到子程序 NEXT 处执行 NEXT MOV PC,LR ;从子程序返回4.2 ARM 指令的寻址方式4.2.7 堆栈寻址 堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。同时,根据堆栈的生成方式,又可以分为递增堆栈(Ascending Stack)和递减堆栈(Decending Stack),当堆栈由低地址
8、向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有四种类型的堆栈工作方式,ARM 微处理器支持这四种类型的堆栈工作方式,即:满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。4.3 常用ARM指令 4.3.1 内存访问指令内存访问指令 1.基本指令基本指令 LDR:存储器memory中数据传送到寄存器register STR:寄存器re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 处理器 指令 概述