第3章 arm指令系统及汇编语言设计

第3章 arm指令系统及汇编语言设计

ID:21012127

大小:229.50 KB

页数:42页

时间:2018-10-18

第3章 arm指令系统及汇编语言设计_第1页
第3章 arm指令系统及汇编语言设计_第2页
第3章 arm指令系统及汇编语言设计_第3页
第3章 arm指令系统及汇编语言设计_第4页
第3章 arm指令系统及汇编语言设计_第5页
资源描述:

《第3章 arm指令系统及汇编语言设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第3章ARM指令系统与汇编语言程序设计3.1ARM指令系统概述3.1.1ARM指令系统的特点(1)所有的运算都在寄存器中进行(2)多数指令可以有条件执行(3)具有批量寄存器数据传送指令(4)支持32位和16位双指令集(5)提供一些数字信号处理指令(6)具有协处理指令3.1.2ARM汇编指令的基本格式ARM指令的二进制代码的基本格式:ARM指令的汇编语言基本格式:操作码{条件}{S}目的寄存器,第一操作数{,第二操作数}例:ADDR0,R4,R8ADDEQR0,R2,#5ADDSR1,R5,R8MOVPC,R143.1.3ARM指令的条件域ARM指令可根据CPRS中条件标志位的状态

2、和指令的条件域表示的条件有条件地执行。CMPR0,#0ADDEQR0,R2,#5MOVGTR1,#0BGENEXT例如:条件域的条件用条件码的助记忆符表示(见表3-1)3.2ARM指令的寻址方式ARM指令常用有如下寻址方式1.立即寻址立即寻址——操作数就在指令中例:ADDR0,R0,#0x3f立即数指令功能:R0←R0+0x3f16进制数2.寄存器寻址寄存器寻址——操作数在寄存器中例:ADDR0,R1,R2指令功能:R0←R1+R23.寄存器间接寻址寄存器间接寻址——操作数在内存中,操作数地址在寄存器中例:LDRR0,[R1]指令功能:R0←[R1]4.变址寻址变址寻址——操作数

3、在内存中,操作数地址由寄存器中内容加偏移量获得LDRR0,[R1],#8指令功能:R0←[R1],R1←R1+8后变址例:LDRR2,[R0,#8]指令功能:R2←[R0+#8]前变址LDRR2,[R0,#8]!指令功能:R2←[R0+8],R0←R0+8自动变址5.寄存器移位寻址寄存器移位寻址——操作数为第2操作数,在第2操作数与第1操作数操作前对第2操作数进行移位。例:ADDR3,R2,R1,LSL#3指令功能:R3←R2+R1×23第2操作数可以进行五种移位。(1)LSL:逻辑左移(2)LSR:逻辑右移(3)ASR:算术右移(4)ROR:循环右移(5)RRX:带扩展的循环右

4、移6.多寄存器寻址多寄存器寻址——一条指令可完成一组寄存器值的传送,连续寄存器之间使用“-”,否则用“,”例:LDMIAR0,{R1-R4}指令功能:R1←[R0],R2←[R0+4],R3←[R0+8],R4←[R0+12],LDMIAR0,{R1,R3}指令功能:R1←[R0],R3←[R0+4],8.相对寻址相对寻址——以程序计数器(PC)的值为基址加偏移量形成转移地址例:BLNEXT…NEXT7.堆栈寻址堆栈寻址——以后进先出的顺序实现数据栈与寄存器组间传送数据例:STMFDR13!,{R0,R1,R3}指令功能:R1,R2,R3内容进栈保存,R13作为栈指针3.3ARM

5、指令的分类介绍ARM微处理器的指令分类:数据处理指令加载/存储指令转移指令程序状态寄存器处理指令软件中断指令协处理器指令3.3.1数据处理指令1.数据传送指令MOV例:MOVR1,R0;将R0内容送R1MOVPC,R14;将立即数5送R0MOVR1,R0,LSL#2;将R0左移2位送R12.数据按位取反传送指令MVN例:MVNR0,#0;将立即数0按位取反送R0执行后R0=0xFFFFFFFF=-13.加法指令例:ADDR0,R1,R2;R0←R1+R2ADDR0,R1,#256;R0←R1+256(2)带进位加法指令ADC将两源操作数相加再加上进位标志位的值,结果送目的寄存器例

6、:利用该指令可实现64位二进制加法ADDSR0,R4,R8;后缀S表示要改变进位位ADCR1,R5,R9;带进位加结果在R0与R1中(1)不带进位加法指令ADC(1)SUB减法指令例:SUBR0,R1,R2;R0←R1-R2(2)SBC带借位减法指令例:SBCR0,R1,R2;R0←R1-R2-!C(4)RSC逆向带借位减法指令例:RSBR0,R1,R2;R0←R2-R1(3)RSB逆向减法指令例:RSCR0,R1,R2;R0←R2-R1-!C4.减法指令(1)逻辑“与”指令AND例:ANDR0,R0,#0x3ff;将R0和0x3ff相;“与”即将R0中的高6位清0;低10位不变

7、5.逻辑运算指令(2)逻辑“或”指令ORR例:ORRR0,R0,#3;将R0的第0、1位置1其余不变(3)逻辑异或指令EOR例:EORR0,R0,#3;将R0的第0、1位取反其余不变(4)BIC位清除指令例:BICR0,R0,#%1011将R0的第0、1、3位清0其余位不变6.比较指令(1)比较指令CMP例:CMPR1,R0;两操作数比较,结果影响标志位(2)取反值比较指令CMN例:CMNR1,R0;将R1与R0的反值比较,影响标志位(1)位测试指令TST例:TSTR1,#%1;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。