第3章 ARM指系统及汇编语言设计.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第3章 ARM指系统及汇编语言设计.ppt》由会员分享,可在线阅读,更多相关《第3章 ARM指系统及汇编语言设计.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 ARM指令系统与汇编语言程序设计指令系统与汇编语言程序设计3.1 ARM指令系统概述指令系统概述3.1.1 ARM指令系统的特点指令系统的特点(1)所有的运算都在寄存器中进行)所有的运算都在寄存器中进行(2)多数指令可以有条件执行)多数指令可以有条件执行(3)具有批量寄存器数据传送指令)具有批量寄存器数据传送指令(4)支持)支持32位和位和16位双指令集位双指令集(5)提供一些数字信号处理指令)提供一些数字信号处理指令(6)具有协处理指令)具有协处理指令3.1.2 ARM汇编指令的基本格式汇编指令的基本格式ARM指令指令的二进制代码的基本格式:的二进制代码的基本格式:ARM指令指令
2、的汇编语言基本格式:的汇编语言基本格式:操作码操作码 条件条件 S 目的寄存器目的寄存器,第一操作数第一操作数 ,第二操作数第二操作数 例:例:ADD R0,R4,R8ADDEQ R0,R2,#5ADDS R1,R5,R8MOV PC,R143.1.3 ARM指令的条件域指令的条件域ARM指令可根据指令可根据CPRS中条件标志位的状态和指令的中条件标志位的状态和指令的条件域表示的条件有条件地执行条件域表示的条件有条件地执行。CMP R0,#0ADDEQ R0,R2,#5MOVGT R1,#0 BGE NEXT例如:例如:条件域的条件用条件码的助记忆符表示(见表条件域的条件用条件码的助记忆符表示
3、(见表3-13-1)3.2 ARM指令的寻址方式指令的寻址方式 ARM指令常用有如下寻址方式指令常用有如下寻址方式1.立即寻址 立即寻址操作数就在指令中例:ADD R0,R0,#0 x3f立即数指令功能:R0R0+0 x3f16进制数2.寄存器寻址寄存器寻址 寄存器寻址操作数在寄存器中例:ADD R0,R1,R2指令功能:R0R1+R23.寄存器间接寻址寄存器间接寻址 寄存器间接寻址操作数在内存中,操作数 地址在寄存器中例:LDR R0,R1指令功能:R0 R14.变址寻址变址寻址 变址寻址操作数在内存中,操作数地址由寄存器中内容加偏移量获得LDR R0,R1,#8 指令功能:R0 R1,R1
4、R1+8 后变址后变址例:LDR R2,R0,#8指令功能:R2 R0+#8 前变址前变址LDR R2,R0,#8!指令功能:R2 R0+8,R0R0+8 自动变址自动变址5.寄存器移位寻址寄存器移位寻址 寄存器移位寻址操作数为第2操作数,在第2操作数与第1操作数操作前对第2操作数进行移位。例:例:ADD R3,R2,R1,LSL#3指令功能:R3 R2+R123 第第2操作数可以进行五种移位。操作数可以进行五种移位。(1)LSL:逻辑左移:逻辑左移(2)LSR:逻辑右移:逻辑右移(3)ASR:算术右移:算术右移(4)ROR:循环右移:循环右移(5)RRX:带扩展的循环右移:带扩展的循环右移6
5、.多寄存器寻址多寄存器寻址 多寄存器寻址一条指令可完成一组寄存器 值的传送,连续寄存器之间 使用“-”,否则用“,”例:LDMIA R0,R1-R4指令功能:R1 R0,R2 R0+4,R3 R0+8,R4 R0+12,LDMIA R0,R1,R3指令功能:R1 R0,R3 R0+4,8.相对寻址相对寻址 相对寻址以程序计数器(PC)的值为基 址加偏移量形成转移地址例:BL NEXT NEXT7.堆栈寻址堆栈寻址 堆栈寻址以后进先出的顺序实现数据栈 与寄存器组间传送数据例:STMFD R13!,R0,R1,R3指令功能:R1,R2,R3内容进栈保存,R13 作为栈指针3.3 ARM指令的分类介
6、绍指令的分类介绍ARM微处理器的指令分类:微处理器的指令分类:数据处理指令数据处理指令 加载加载/存储指令存储指令 转移指令转移指令 程序状态寄存器处理指令程序状态寄存器处理指令软件中断指令软件中断指令协处理器指令协处理器指令3.3.1 数据处理指令数据处理指令1.数据传送指令数据传送指令MOV例:MOV R1,R0 ;将;将R0内容送内容送R1MOV PC,R14 ;将立即数;将立即数5送送R0MOV R1,R0,LSL#2;将;将R0左移左移2位送位送R12.数据按位取反传送指令数据按位取反传送指令MVN例:例:MVN R0,#0 ;将立即数;将立即数0按位取反送按位取反送R0执行后执行后
7、R0=0 xFFFFFFFF=-13.加法指令加法指令例:例:ADD R0,R1,R2 ;R0 R1+R2ADD R0,R1,#256 ;R0 R1+256(2)带进位加法指令带进位加法指令ADC 将两源操作数相加再加上进位标志位的值,结果送目的寄存器例:利用该指令可实现64位二进制加法ADDS R0,R4,R8;后缀后缀S表示要改变进位位表示要改变进位位ADC R1,R5,R9;带进位加结果在带进位加结果在R0与与R1中中(1)不带进位加法指令不带进位加法指令ADC(1)SUB 减法指令减法指令例:例:SUB R0,R1,R2 ;R0 R1-R2(2)SBC 带借位减法指令带借位减法指令例:
8、例:SBC R0,R1,R2 ;R0 R1-R2-!C(4)RSC 逆向带借位减法指令逆向带借位减法指令例:例:RSB R0,R1,R2 ;R0 R2-R1(3)RSB 逆向减法指令逆向减法指令例:例:RSC R0,R1,R2 ;R0 R2-R1-!C4.减法指令减法指令(1)逻辑逻辑“与与”指令指令AND例:例:AND R0,R0,#0 x3ff ;将;将R0和和0 x3ff 相相 ;“与与”即将即将R0中的高中的高6位清位清0 ;低;低10位不变位不变 5.逻辑运算指令逻辑运算指令(2)逻辑逻辑“或或”指令指令ORR 例:例:ORR R0,R0,#3;将;将R0的第的第0、1位置位置1其余
9、不变其余不变(3)逻辑异或指令逻辑异或指令EOR 例:EOR R0,R0,#3;将;将R0的第的第0、1位取反其余不变位取反其余不变(4)BIC 位清除指令位清除指令例:例:BIC R0,R0,#%1011 将将R0的第的第0、1、3位清位清0其余位不变其余位不变6.比较指令比较指令(1)比较指令比较指令CMP 例:例:CMP R1,R0;两操作数比较,结果影响标志位;两操作数比较,结果影响标志位(2)取反值比较指令)取反值比较指令CMN 例:例:CMN R1,R0;将;将R1与与R0的反值比较,影响标志位的反值比较,影响标志位(1)位测试指令)位测试指令TST 例:例:TST R1,#%1;
10、测试测试R1的最低位,影响标志位的最低位,影响标志位(2)相等测试指令相等测试指令TEQ 例:例:TEQ R1,#5 ;测试;测试R1是否与是否与5相等相等7.测试指令测试指令8.乘法和乘加指令乘法和乘加指令(1)32位乘法指令位乘法指令MUL例:例:MUL R0,R1,R2 ;R0 R1xR2(2)32位乘加指令位乘加指令MLA 例:例:MULA R0,R1,R2,R3;R0 R1xR2+R3(3)64位有符号乘法指令位有符号乘法指令SMULL 例:例:SMULL R0,R1,R2,R3 ;R0 R2xR3的低的低32位位 ;R1 R2xR3的高的高32位位(4)64位有符号乘加指令位有符号
11、乘加指令SMUAL 例:例:SMLAL R0,R1,R2,R3 ;R0 R2xR3的低的低32位位+R0 ;R1 R2xR3的高的高32位位+R1(5)64位无符号乘法指令位无符号乘法指令UMULL(6)UMLAL 64位有符号乘加指令位有符号乘加指令3.3.2 加载加载/存储指令存储指令该类指令用于寄存器与存储器(该类指令用于寄存器与存储器(I/O接口)之间接口)之间传送数据。传送数据。加载加载/存储指令存储指令单寄存器加载单寄存器加载/存储指令存储指令多寄存器加载多寄存器加载/存储指令存储指令数据交换指令数据交换指令加载:寄存器加载:寄存器 存储器(存储器(I/O接口)接口)存储:存储:存
12、储器(存储器(I/O接口)接口)寄存器寄存器(1)字数据加载指令)字数据加载指令LDR 该类指令用于单个寄存器与存储器之间传送数据该类指令用于单个寄存器与存储器之间传送数据指令功能:把内存中的字数据传送到目标寄存指令功能:把内存中的字数据传送到目标寄存 器中去。器中去。例:例:LDR R0,R1;将将R1存放地址的内存字单存放地址的内存字单 元数据传送到元数据传送到R0中中(2)字节数据加载指令)字节数据加载指令LDRB 指令功能:把内存中的字节数据传送到目标寄存指令功能:把内存中的字节数据传送到目标寄存 器中去。器中去。例:例:LDRB R0,R1;将;将R1存放地址的内存字节存放地址的内存
13、字节 单元数据传送到单元数据传送到R0中中1.单寄存器加载单寄存器加载/存储指令存储指令(3)半字数据加载指令)半字数据加载指令LDRH 指令功能:把内存中的半字数据传送到目标寄存指令功能:把内存中的半字数据传送到目标寄存 器中去器中去。(4)有符号字节数据加载指令)有符号字节数据加载指令LDRSB 指令功能:把内存中的有符号字节数据传送到目指令功能:把内存中的有符号字节数据传送到目 标寄存器中去,并进行符号位扩展,标寄存器中去,并进行符号位扩展,形成有符号的形成有符号的32位数。位数。(5)有符号半字数据加载指令)有符号半字数据加载指令LDRSH(6)字数据存储指令)字数据存储指令STR 指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 ARM指系统及汇编语言设计 ARM 系统 汇编语言 设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内