安徽理工大学计算机汇编教程-Thumb指令系统_第1页
安徽理工大学计算机汇编教程-Thumb指令系统_第2页
安徽理工大学计算机汇编教程-Thumb指令系统_第3页
安徽理工大学计算机汇编教程-Thumb指令系统_第4页
安徽理工大学计算机汇编教程-Thumb指令系统_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计18086/80888086/8088和和ARMARM核核汇编语言程序设计汇编语言程序设计 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计219.2 Thumb19.2 Thumb存储器访问指令存储器访问指令19.1 19.1 概述概述19.3 Thumb19.3 Thumb数据处理指令数据处理指令19.4 Thumb19.4 Thumb分支指令分支指令19.5

2、 Thumb19.5 Thumb杂项指令杂项指令19.6 Thumb19.6 Thumb伪指令伪指令 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计319.1 19.1 概述概述 说明:Thumb指令的格式与使用方式与ARM指令集类似,而且使用并不是很频繁,建议这部分内容选修。 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计419.2 Thumb19.2 Thumb存储器访问指令存储器访问指令19.1 19.

3、1 概述概述19.3 Thumb19.3 Thumb数据处理指令数据处理指令19.4 Thumb19.4 Thumb分支指令分支指令19.5 Thumb19.5 Thumb杂项指令杂项指令19.6 Thumb19.6 Thumb伪指令伪指令 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计5 Thumb存储器访问指令助记符助记符说明说明操作操作影响标志影响标志LDR/STR Rd,addressing 加载加载/ /存储字数据存储字数据RdRdRn,#immed_5Rn,#immed_544,RdRd、

4、RnRn为为R0R0R7R7无无LDRH/STRH Rd,addressing 加载加载/ /存储无符号半存储无符号半字数据字数据RdRdRn,#immed_5Rn,#immed_52 2 ,RdRd、RnRn为为R0R0R7R7无无LDRB/STRB Rd,addressing加载加载/ /存储无符号字存储无符号字节数据节数据RdRdRn,#immed_5Rn,#immed_51 1 ,RdRd、RnRn为为R0R0R7R7无无LDRSH Rd,addressing 加载有符号半字数据加载有符号半字数据RdRdRn,RmRn,Rm,RdRd、RnRn、RmRm为为R0R0R7R7无无LDRS

5、B Rd,addressing加载有符号字节数据加载有符号字节数据RdRdRn,RmRn,Rm,RdRd、RnRn、RmRm为为R0R0R7R7无无单寄存器访问指令 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计6 Thumb存储器访问指令LDR和STR加载/存储指令 根据指令的寻址方式不同,可以分为以下三类: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计7 单寄存器访问指令 以这种寻址方式对存储器访问时,

6、存储器的地址以一个寄存器的内容为基址,在偏移一个立即数后指明。指令格式如下: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计8 单寄存器访问指令指令执行的条件码:0110b:LDR/STR指令;1000b:LDRH/STRH指令;0111b:LDRB/STRB指令;L用于区别加载(L为1)或存储(L为0)Immed_5:5位无符号立即数偏移Rn:基址寄存器Rd:源或目标寄存器 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇

7、编程序设计设计9 单寄存器访问指令立即数偏移寻址注意:进行字数据访问时,必须保证传送地址为进行字数据访问时,必须保证传送地址为3232位位对齐。进行半字数据访问时,必须保证传送地址为对齐。进行半字数据访问时,必须保证传送地址为1616位位对齐。对齐。 应用示例: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计10 单寄存器访问指令 这种寻址方式是以一个寄存器的内容为基址,以另一个寄存器的内容为偏移量,两者相加作为存储器的地址。指令格式如下: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1

8、章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计11 单寄存器访问指令指令执行的条件码:00b:LDR/STR指令;01b:LDRH/STRH指令;10b:LDRB/STRB指令;L用于区别加载(L为1)或存储(L为0)Rm:偏移量寄存器Rn:基址寄存器Rd:源或目标寄存器说明:当opcode位为11b时 , L 位 为 0 代 表 指 令“LDRSB“,L位为1代表指令“LDRSH” 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计12 单寄存器访问指令注意:进行字数据

9、访问时,必须保证传送地址为32位对齐。进行半字数据访问时,必须保证传送地址为16位对齐。 应用示例: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计13 单寄存器访问指令 这种寻址方式是以这种寻址方式是以PCPC或或SPSP寄存器的内容为基址,寄存器的内容为基址,以一个立即数为偏移量,两者相加作为存储器的地址。以一个立即数为偏移量,两者相加作为存储器的地址。指令格式如下:指令格式如下: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM

10、汇编程序汇编程序设计设计14 单寄存器访问指令L:用于区别加载(L为1)或存储(L为0)Rd:目标或源寄存器immed8:偏移量PC相对偏移LDR指令编码SP相对偏移LDR/STR指令编码 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计15 单寄存器访问指令注意:以PC作为基地址的相对偏移寻址指令只有LDR,而没有STR指令。 应用示例: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计16 Thumb存储器访

11、问指令 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计17 寄存器入栈及出栈指令指令编码指令格式R R用于区别操作寄存器中用于区别操作寄存器中是否有是否有LR/PCLR/PC寄存器寄存器(有则(有则R R为为1 1,否则为,否则为0 0) 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计18 寄存器入栈及出栈指令指令格式 应用示例: PUSHR0-R7,LR; ;将低寄存器将低寄存器R0R0R7R7全部入栈,全

12、部入栈,;LR;LR也入栈也入栈 POPR0-R7,PC; ;将堆栈中的数据弹出到将堆栈中的数据弹出到; ;低寄存器低寄存器R0R0R7R7及及PCPC中中 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计1919.2 Thumb19.2 Thumb存储器访问指令存储器访问指令19.1 19.1 概述概述19.3 Thumb19.3 Thumb数据处理指令数据处理指令19.4 Thumb19.4 Thumb分支指令分支指令19.5 Thumb19.5 Thumb杂项指令杂项指令19.6 Thumb19.

13、6 Thumb伪指令伪指令 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计20 Thumb数据处理指令 Thumb数据处理指令涵盖了编译器需要的大多数操作。大部分的Thumb数据处理指令采用2地址格式,不能在单指令中同时完成一个操作数的移位及一个ALU操作。所以数据处理操作比ARM状态的更少,并且访问寄存器R8R15受到限制。数据处理指令分为两类: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计21 Thum

14、b数据处理指令数据传送指令助记符助记符操作操作影响标志影响标志MOV Rd,#exprMOV Rd,#exprRdRdexprexpr,RdRd为为R0R0R7R7影响影响N N、Z ZMOV Rd,RmMOV Rd,RmRdRdRmRm,RdRd、RmRm均可为均可为R0R0R15R15RdRd和和RmRm均为均为R0R0R7R7时,时,影响影响N N、Z Z,清零,清零C C、V V MVN Rd,RmMVN Rd,RmRdRd(Rm) (Rm) ,RdRd、RmRm均为均为R0R0R7R7影响影响N N、Z ZNEG Rd,RmNEG Rd,RmRdRd(-Rm) (-Rm) ,RdRd

15、、RmRm均为均为R0R0R7R7影响影响N N、Z Z、C C、V V 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计22 MOV指令将8位立即数或寄存器传送到目标寄存器中。其指令格式如下: 数据传送指令MOVMOVMOVRd,#exprRd,#exprMOVMOVRd,RmRd,Rm其中:其中:RdRd 目标寄存器。目标寄存器。MOV Rd,#exprMOV Rd,#expr时,时,RdRd必须在必须在R0R0R7R7之间。之间。 exper exper 8 8位立即数,即位立即数,即0 0255

16、255。 RmRm 源寄存器。为源寄存器。为R0R0R15R15。指令编码(立即数传送)指令编码(寄存器传送) 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计23 数据传送指令MOV注意:注意: “MOV Rd,#expr”指令会更新指令会更新NN和和Z Z标志,对标志标志,对标志C C和和V V无影响。无影响。 “MOV Rd,Rm”指令,若指令,若RdRd或或RmRm是高寄存器(是高寄存器(R8R8R15R15),则标志),则标志不受影响,若不受影响,若RdRd或或RmRm都是低寄存器(都是低寄存

17、器(R0R0R7R7),则更新标志),则更新标志NN和和Z Z,且,且清除标志清除标志C C和和V V。 应用示例: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计24 数据传送指令MVNMVNMVNRd,RmRd,Rm其中:其中:RdRd目标寄存器。目标寄存器。MOV Rd,#exprMOV Rd,#expr时,时,RdRd必须在必须在R0R0R7R7之间。之间。 RmRm源寄存器。为源寄存器。为R0R0R15R15。指令编码 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语

18、言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计25 应用示例: 数据传送指令MVN 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计26 数据传送指令NEG指令编码 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计27 数据传送指令NEG 应用示例: 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计2

19、8 Thumb数据处理指令算术逻辑运算指令 算术逻辑指令包括以下几类:算术指令逻辑运算指令移位指令比较指令 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计29ADD指令将两个数据相加,结果保存到Rd寄存器中。 算术运算指令ADDADD Rd,Rn,RmADD Rd,Rn,#expr3ADD Rd,#expr8其中:Rd 目标寄存器,必须在R0R7之间。 Rn 第1个操作数寄存器,必须在R0R7之间。 Rm 第2个操作数寄存器,必须在R0R7之间。 exper 3位立即数,即07。 expr8 8位立即

20、数,即0255。低寄存器的ADD指令格式: 应用示例: ADD R1,R1,R0; R1=R0+R1 ADD R1,R1,#7; R1=R1+7 ADD R1,#200; R1=R1+200 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计30ADD指令将两个数据相加,结果保存到Rd寄存器中。 算术运算指令ADDADD Rd,Rm其中:Rd 目标寄存器,也是第一个操作数寄存器。 Rm 第2个操作数寄存器。高或低寄存器的ADD指令格式: 应用示例: ADD R1,R10; R1=R1+R10 计算机科学与

21、技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计31ADD指令将两个数据相加,结果保存到Rd寄存器中。 算术运算指令ADDADD SP,#expr其中:SP 目标寄存器,也是第一个操作数寄存器。 expr 立即数,在-508+508之间的4的整数倍的数。SP操作的ADD指令格式: 应用示例: ADD SP,#-500;SP=SP-500 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计32SUB指令将两个数据相减,结果保存到

22、Rd寄存器中。 算术运算指令SUBSUB Rd,Rn,RmSUB Rd,Rn,#expr3SUB Rd,#expr8其中:Rd 目标寄存器,必须在R0R7之间。 Rn 第1个操作数寄存器,必须在R0R7之间。 Rm 第2个操作数寄存器,必须在R0R7之间。 exper 3位立即数,即07。 expr8 8位立即数,即0255。低寄存器的SUB指令格式: 应用示例: SUB R1,R1,R0; R1=R1-R0 SUB R1,R1,#7; R1=R1-7 SUB R1,#200; R1=R1-200 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知

23、识 20章章 ARM汇编程序汇编程序设计设计33SUB指令将两个数据相减,结果保存到Rd寄存器中。 算术运算指令SUBSUB SP,#expr其中:SP 目标寄存器,也是第一个操作数寄存器。 expr 立即数,在-508+508之间的4的整数倍的数。SP操作的SUB指令格式: 应用示例: SUB SP,#-380;SP=SP-380 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计34 ADC指令将Rm的值相加,再加上CPSR中的C条件标志位,结果保存到Rd寄存器。 算术运算指令ADCADC Rd, R

24、m其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rm 第2个操作数寄存器,必须在R0R7之间。ADC指令格式: 应用示例(64位加法): ADD R0,R2 ADC R1,R3;(R1、R2)=(R1、R0)+(R3、R2) 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计35 SBC指令用寄存器Rd减去Rm,再减去CPSR中的C条件标志位的非,结果保存到Rd寄存器。 算术运算指令SBCSBC Rd, Rm其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rm

25、 第2个操作数寄存器,必须在R0R7之间。SBC指令格式: 应用示例(64位减法): SUB R0,R2 SBC R1,R3;(R1、R2)=(R1、R0)-(R3、R2) 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计36 MUL乘法指令用寄存器Rd乘以Rm,结果保存到Rd寄存器。 算术运算指令MULMUL Rd, Rm其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rm 第2个操作数寄存器,必须在R0R7之间。MUL指令格式: 应用示例(64位减法): MUL R0,R1;R

26、0=R0R1 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计37 AND指令将寄存器Rd的值与寄存器Rm的值按位作逻辑“与”操作,结果保存到Rd寄存器中。 逻辑运算指令ANDADD Rd, Rm其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rm 第2个操作数寄存器,必须在R0R7之间。AND指令格式: 应用示例: MOV R1,#0 x0F AND R0,R1; R0=R0 & R1,清零R0高24位 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基

27、础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计38 ORR指令将寄存器Rd的值与寄存器Rn的值按位作逻辑“或”操作,结果保存到Rd寄存器中。 逻辑运算指令ORRORR Rd, Rm其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rm 第2个操作数寄存器,必须在R0R7之间。ORR指令格式: 应用示例: MOV R1,#0 x0F ORR R0,R1; R0=R0 | R1,置位R0低4位 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计39 EOR指令将寄存器Rd

28、的值与寄存器Rn的值按位作逻辑“异或”操作,结果保存到Rd寄存器中。 逻辑运算指令EOREOR Rd, Rm其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rm 第2个操作数寄存器,必须在R0R7之间。EOR指令格式: 应用示例: MOV R1,#0 x0F EOR R0,R1; R0=R0 R1,取反R0低4位 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计40 BIC指令将寄存器Rd的值与寄存器Rm的值的反码作逻辑“与”操作,结果保存到Rd寄存器中。 逻辑运算指令BICBIC

29、 Rd, Rm其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rm 第2个操作数寄存器,必须在R0R7之间。BIC指令格式: 应用示例: MOV R1,#0 x02 BIC R0,R1; 清零R0的第2位,其它位不变 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计41 ASR指令将数据算术右移,将符号位拷贝到左侧空出的位,移位结果保存到Rd寄存器中。 移位指令ASRASR Rd, RsASR Rd,Rm,#expr其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间

30、。 Rs 寄存器控制移位中包含移位位数的寄存器,必须在R0R7之间 Rm 立即数移位的源寄存器,必须在R0R7之间 expr 立即数移位位数,值为132ASR指令格式:ASR移位操作: 若移位位数为32,则Rd清零,最后移出的位保留在标志C中;若移位位数大于32,则Rd和标志C均被清零;若移位位数为0,则不影响C标志。 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计42 ASR指令将数据算术右移,将符号位拷贝到左侧空出的位,移位结果保存到Rd寄存器中。 移位指令ASRASR Rd, RsASR Rd,

31、Rm,#expr其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rs 寄存器控制移位中包含移位位数的寄存器,必须在R0R7之间 Rm 立即数移位的源寄存器,必须在R0R7之间 expr 立即数移位位数,值为132ASR指令格式: 应用示例: ASR R1,R2 ASR R3,R1,#2 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计43 LSL指令将数据逻辑左移,空位清零,移位结果保存到Rd寄存器中。 移位指令LSLLSL Rd, RsLSL Rd,Rm,#expr其中:Rd 目

32、标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rs 寄存器控制移位中包含移位位数的寄存器,必须在R0R7之间 Rm 立即数移位的源寄存器,必须在R0R7之间 expr 立即数移位位数,值为131LSL指令格式: 若移位位数为32,则Rd清零,最后移出的位保留在标志C中;若移位位数大于32,则Rd和标志C均被清零;若移位位数为0,则不影响C标志。LSL移位操作:0 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计44 LSL指令将数据逻辑左移,空位清零,移位结果保存到Rd寄存器中。 移位指令LS

33、LLSL Rd, RsLSL Rd,Rm,#expr其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rs 寄存器控制移位中包含移位位数的寄存器,必须在R0R7之间 Rm 立即数移位的源寄存器,必须在R0R7之间 expr 立即数移位位数,值为131LSL指令格式: 应用示例: LSL R6,R7 LSL R1,R6,#2 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计45 LSR指令将数据逻辑右移,空位清零,移位结果保存到Rd寄存器中。 移位指令LSRLSR Rd, RsLSR

34、Rd,Rm,#expr其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rs 寄存器控制移位中包含移位位数的寄存器,必须在R0R7之间 Rm 立即数移位的源寄存器,必须在R0R7之间 expr 立即数移位位数,值为132LSR指令格式: 若移位位数为32,则Rd清零,最后移出的位保留在标志C中;若移位位数大于32,则Rd和标志C均被清零;若移位位数为0,则不影响C标志。LSR移位操作:0 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计46 LSR指令将数据逻辑右移,空位清零,移位结

35、果保存到Rd寄存器中。 移位指令LSRLSR Rd, RsLSR Rd,Rm,#expr其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rs 寄存器控制移位中包含移位位数的寄存器,必须在R0R7之间 Rm 立即数移位的源寄存器,必须在R0R7之间 expr 立即数移位位数,值为132LSR指令格式: 应用示例: LSR R3,R0 LSR R5,R2,#2 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计47 ROR指令将数据循环右移,寄存器右侧移出的位放入左侧空出的位上,移位结果

36、保存到Rd寄存器中。 移位指令RORROR Rd, Rs其中:Rd 目标寄存器,也是第一个操作数寄存器,必须在R0R7之间。 Rs 寄存器控制移位中包含移位位数的寄存器,必须在R0R7之间 ROR指令格式:ROR移位操作: 应用示例: ROR R3,R0 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计48 CMP指令使用寄存器Rn的值减去第二个操作数的值,根据操作的结果更新CPSR中的N、Z、C和V标志位。 比较指令CMPCMP Rn,RmCMP Rn,#epr其中:Rn 第一个操作数寄存器,必须在R

37、0R7之间。 Rm 第二个操作数寄存器,必须在R0R7之间。 expr 立即数,值为0255ROR指令格式: 应用示例: CMP R1,#10;R1与10比较,设置相关标志位 CMP R1,R2 ;R1与R2比较,设置相关标志位 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计49 CMN指令使用寄存器Rn的值加上寄存器Rm的值,根据操作的结果更新CPSR中的N、Z、C和V标志位。 比较指令CMNCMN Rn,Rm其中:Rn 第一个操作数寄存器,必须在R0R7之间。 Rm 第二个操作数寄存器,必须在R0

38、R7之间。ROR指令格式: 应用示例: CMN R0,R2 ;R0与-R2比较,设置相关标志位 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计50 TST指令将寄存器Rn的值与寄存器Rm的值按位作逻辑“与”操作,根据操作的结果更新CPSR中的N、Z、C和V标志位。 比较指令TSTTST Rn,Rm其中:Rn 第一个操作数寄存器,必须在R0R7之间。 Rm 第二个操作数寄存器,必须在R0R7之间。TST指令格式: 应用示例: MOV R0,#0 x01 TST R1,R0 ;判断R1的最低位是否为0 计

39、算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计5119.2 Thumb19.2 Thumb存储器访问指令存储器访问指令19.1 19.1 概述概述19.3 Thumb19.3 Thumb数据处理指令数据处理指令19.4 Thumb19.4 Thumb分支指令分支指令19.5 Thumb19.5 Thumb杂项指令杂项指令19.6 Thumb19.6 Thumb伪指令伪指令 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序

40、设计设计52 Thumb分支指令助记符说明操作条件码位置B label分支指令PClabelBcondBL label带链接的分支指令LRPC-4,PClabel无BX Rm带状态切换的分支指令PClabel,切换处理器状态无 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计53 B指令跳转到指定的地址执行程序,它是Thumb指令集中的唯一有条件执行指令。如果使用了条件执行,那么跳转范围在-252+256字节内。如果没有使用条件执行,那么跳转范围在2K内。 分支指令BBcond label其中:labe

41、l表示程序标号。B指令格式: 应用示例: B WAITB ;WAITB标号在当前指令的2K范围内 BEQ LOOP1 ;LOOP1标号在当前指令的-252+256范围内 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计54 BL指令在跳转到指定地址执行程序前,将下一条指令的地址拷贝到R14链接寄存器中。 分支指令BLBL label其中:label 表示程序标号。BL指令格式:注意:由于BL指令通常需要大的地址范围,很难用16位指令格式实现,为此,Thumb采用两条这样的指令组合成22位半字偏移(符号扩

42、展为32位),使指令转移范围为4MB。 应用示例:反汇编代码:ADDR0,R1BLRstInit 0 x1809 add r1,r1,r00 xf9dcf000 bl RstInit指令机器码汇编指令32位长的机器码 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计55 BX指令是带状态切换的分支指令,跳转地址由Rm指定,同时根据Rm的最低位的值切换处理器状态,当最低两位均为0时,切换到ARM状态。 分支指令BXBX Rm其中:Rm 保存有目标地址的寄存器。BX指令格式: 应用示例: ADR R0,ArmFun;将ARM程序段地址存入R0 BX R0 ;跳至R0指定的地址,并切换到ARM状态 计算机科学与技术系计算机科学与技术系 2022-2-5第第1章章 汇编语言基础知识汇编语言基础知识 20章章 ARM汇编程序汇编程序设计设计5619.2 Thumb19.2 Thumb存储器访问指令存储器访问指令19.1 19.1 概述概述19.3 Thumb19.3 Thumb数据处理指令数据处理指令19.4 Thumb19.4 Thumb分支指令分支指令19.5 Thumb19.5 Thumb杂项指令杂项指令19.6 Thumb19.6 Thumb伪指令伪指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论