ARM指令集解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据传送指令
2.MVN指令 MVN {<cond>}{S} Rd,operand2 功能:将源操作数operand2按位取反后 传送到目的寄存器Rd中 MVN R0,#5 MVN R1,R2
移位操作
将寄存器中的内容进行指定位数的左移 右移 1.LSL——逻辑左移 Rm,LSL<opl> 功能:将寄存器Rm中的内容进行逻辑左 移,左移位数为操作数opl,低位补零 MOV R0,R1,LSL #1
AXD下操作 ①打开AXD,载入映像文件(载入、重载) ②观察寄存器、存储器以及变量的值 Processor View——>Register Processor View——>Memory ③观察单步运行结果(理解程序含义、判 断结果是否正确?)
补充2—ARM的寻址方式实验
判断各种不同的寻址方式 注意!后缀 根据程序,决定观察哪些内容?可能变 化的位置? 单步运行程序,填写结果 实验思考? 寄存器组织(page46、page48)
移位操作
4.ROR——循环右移 Rm,ROR<opl> 功能:将寄存器Rm中的内容进行逻辑右 移,右移位数为操作数opl,左端由右端 移出的位来补 MOV R0,R1,ROR #1
移位操作
5.RRX——带扩展的循环右移 Rm,RRHale Waihona Puke Baidu 功能:将寄存器Rm中的内容右移一位, 高位由C标志位补入,低位移出后存入C 标志位(33位数据) MOVS R0,R1,RRX
算术指令
2.ADC——带进位加法指令 ADC{<cond>}{S}Rd,Rn,operand2 功能:将寄存器Rn的值与operand2操作 数相加,再加上CPSR中的C条件标志位 的值,并将结果存放在Rd寄存器中 举例:完成64位加法,设第一个64位操 作数放在R2、R3中,第二个64位操作数 放在R4、R5中,64位结果存放在R0、R1 中。
算术指令
实现两个32位数据的加法、减法操作 1.ADD——加法指令 ADD{<cond>}{S}Rd,Rn,operand2 功能:将寄存器Rn的值与operand2操作 数相加,并将结果存放在Rd寄存器中 ADD R0,R1,R2 ADD R0,R1,#5 ADD R0,R1,R2,LSL #2
ARM的汇编指令
补充1—ADS下汇编语言编程
CodeWarrior下操作 ①ARM编译器的设置(设置内核、存取格 式(page37)、ARM/Thumb初始状态) ②ARM链接器的设置 (设置代码段、数据 段的起始地址) ③ARM的编译和链接(错误和警告,如何 判断、修改?)
补充1—ADS下汇编语言编程
算术指令
3.SUB——减法指令 SUB{<cond>}{S}Rd,Rn,operand2 功能:将寄存器Rn的值减去operand2操 作数,并将结果存放在Rd寄存器中 SUB R0,R1,R2 SUB R0,R1,#5 SUB R0,R1,R2,LSL #2
算术指令
4.SBC——带借位减法指令 SBC{<cond>}{S}Rd,Rn,operand2 功能:将寄存器Rn的值减去operand2操 作数,再减去CPSR中的C条件标志位的 反码,并将结果存放在Rd寄存器中 举例:完成64位减法,设第一个64位操 作数放在R2、R3中,第二个64位操作数 放在R4、R5中,64位结果存放在R0、R1 中。
逻辑运算指令
对操作数按位进行操作,位与位之间无 进位或借位 1、AND逻辑与指令 AND{<cond>}{S}Rd,Rn,operand2 功能:将两个操作数按位进行逻辑与运 算,结果放在目的寄存器Rd中 AND R0,R0,#0xF
逻辑运算指令
2、ORR逻辑或指令 ORR{<cond>}{S}Rd,Rn,operand2 功能:将两个操作数按位进行逻辑或运 算,结果放在目的寄存器Rd中 ORR R0,R0,#5
移位操作
2.LSR——逻辑右移 Rm,LSR<opl> 功能:将寄存器Rm中的内容进行逻辑右 移,右移位数为操作数opl,高位补零 MOV R0,R1,LSR #1
移位操作
3.ASR——算术右移 Rm,ASR<opl> 功能:将寄存器Rm中的内容进行算术右 移,右移位数为操作数opl,高位补第31 位的值 MOV R0,R1,ASR #1
算术指令
5.RSB——逆向减法指令 RSB{<cond>}{S}Rd,Rn,operand2 功能:将operand2操作数减去寄存器Rn 的值,并将结果存放在Rd寄存器中 RSB R0,R1,R2 RSB R0,R1,#5 RSB R0,R1,R2,LSL #2
算术指令
6.RSC——带借位的逆向减法指令 RSC{<cond>}{S}Rd,Rn,operand2 功能:将operand2操作数减去寄存器Rn 的值,再减去CPSR中的C条件标志位的 反码,并将结果存放在Rd寄存器中 RSC R0,R1,R2
数据传送指令
将一个寄存器中的数据传送到另一个寄存器, 或者将一个立即数传送寄存器 1.MOV指令 MOV {<cond>}{S} Rd,operand2 功能:将源操作数operand2传送到目的寄存器 Rd中 MOV R1,R0 MOV PC,R14 MOV R1,R0,LSL #3 MOV R0,#5
逻辑运算指令
3、EOR逻辑异或指令 EOR{<cond>}{S}Rd,Rn,operand2 功能:将两个操作数按位进行逻辑异或 运算,结果放在目的寄存器Rd中 举例:若要将R0的低4位取反,其余位不 变则应执行什么指令?
逻辑运算指令
4、BIC位清除指令 BIC{<cond>}{S}Rd,Rn,operand2 功能:用于清除操作数Rn的某些位,并 将结果放在目的寄存器Rd中 举例:若要将R0的第0位和第3位清零, 其余位不变则应执行什么指令?