ARM汇编指令课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《ARM汇编指令课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 汇编 指令 课件
- 资源描述:
-
1、 ARMARM采用三地址指令格式:采用三地址指令格式:ARM汇编指令书写格式汇编指令书写格式 S ,其中号内的项是必须的,号内的项可选。opcode:指令助记符;:指令助记符;cond:执行条件;执行条件;S:是否影响:是否影响CPSRCPSR寄存器的值;寄存器的值;Rd:目标寄存器;:目标寄存器;Rn:第:第1 1个操作数的寄存器;个操作数的寄存器;operand2:第:第2 2个操作数(个操作数(#immed_8r#immed_8r、RmRm、Rm,shiftRm,shift););指令语法目标寄存器(Rd)源寄存器1(Rn)源寄存器2(Rm)ADD r3,r1,r2r3r1r2yyyy-
2、M-d2/95ARM指令中的第指令中的第2操作数操作数0 x120 0 0 1 0 0 1 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x801 0 0 0 0 0 0 00 x040 0 0 0 0 1 0 08位常数循环右移位常数循环右移10位位常数常数#immed_8r#immed_8r由一个由一个8位常数通过循环右移偶数位得到:位常数通过循环右移偶数位得到:Rm,shiftRm,shift由由RmRm移位得到。移位不消耗额外时
3、间,且移位得到。移位不消耗额外时间,且RmRm值不变。值不变。ALU桶形移位器桶形移位器Rd结果结果N预预处处理理未未预预处处理理RmRnLSL0LSR0ASRRORRRXCyyyy-M-d桶形移位器的操作桶形移位器的操作助记符功能表达式操 作Y值LSL逻辑左移x LSL yX y#132 or RsASR算术右移x ASR y(signed)x Y#132 or RsROR循环逻辑右移x ROR y(unsigned)x y|(x 32-y)#131 or RsRRX扩展循环右移x RRX(c flag 1)noneADDR1,R1,R1,LSL#3;R1=R1+R1R3yyyy-M-d4/
4、95ARM机器指令编码格式机器指令编码格式条件码条件助记符标志含义0000EQZ=1相等0001NEZ=0不相等0010CS/HSC=1无符号数大于或等于0011CC/LOC=0无符号数小于0100MIN=1负数0101PLN=0正数或零0110VSV=1溢出0111VCV=0没有溢出1000HIC=1,Z=0无符号数大于1001LSC=0,Z=1无符号数小于或等于1010GEN=V有符号数大于或等于 1011LTN!=V有符号数小于 1100GTZ=0,N=V有符号数大于 1101LEZ=1,N!=V有符号数小于或等于 1110AL任何无条件执行(指令默认条件)1111NV任何从不执行(不要
5、使用)1.1.所有的所有的ARMARM指令都可以条指令都可以条件执行,而件执行,而ThumbThumb指令只指令只有有B B(跳转)(跳转)指令具有条件指令具有条件执行执行 功能。功能。2.2.如果指令不如果指令不标明条件代码,标明条件代码,将默认为无条将默认为无条件(件(ALAL)执行)执行ARM指令条件码指令条件码cond6/95ARM处理器寻址方式处理器寻址方式 寻址方式是根据指令中给出的地址码寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。字段来实现寻找真实操作数地址的方式。ARM ARM处理器具有几种基本寻址方式:处理器具有几种基本寻址方式:1.1.寄存器寻址寄存
6、器寻址 2.2.立即寻址立即寻址 3.3.寄存器间接寻址寄存器间接寻址移位寻址移位寻址、间接寻址间接寻址、基址变址寻址基址变址寻址、多寄存器寻址多寄存器寻址(块寻址)(块寻址)4.4.堆栈寻址堆栈寻址 5.5.相对寻址相对寻址7/950 xAA0 x55R2R1寄存器寻址寄存器寻址1.操作数存放在寄存器中;2.指令地址码字段给出寄存器编号(名);3.指令执行时直接取出寄存器值来操作;MOV R1,R2;R1=R2 SUB R0,R1,R2 ;R0=R1-R2 0 xAAyyyy-M-d8/951.操作数包含在指令当中;2.指令地址码部分就是数据本身;3.取指时就取出了可立即使用的操作数;MOV
7、R0,#0 xFF00 ;R0=#0 xFF00 SUBSR0,R0,#1 ;R0=R0-10 x55R0MOV R0,#0 xFF00立即寻址立即寻址0 xFF00从代码中获得数据从代码中获得数据10进制数:进制数:#21,#0d572进制数:进制数:#0b0110016进制数:进制数:#0 x3a001影响标志位影响标志位寄存器寻址寄存器寻址yyyy-M-d9/951.操作数存放在寄存器中;2.指令地址码字段给出寄存器编号(名)及移位表达式;3.指令执行时取出寄存器值并移位,再将结果作为源操作数;MOV R0,R2,LSL#3 ;R0=R28 ANDS R1,R1,R2,LSL R3 ;R
8、1=R1 and(R2R3)0 x55R0R20 x01寄存器移位寻址寄存器移位寻址0 x080 x08逻辑左移逻辑左移3位位寄存器寻址寄存器寻址影响标志位影响标志位LSL、LSRASRROR、RRX寄存器间接寻址寄存器间接寻址1.操作数存放在内存单元中;2.指令地址码字段给出 寄存器编号(名);3.指令执行时根据寄存器值(指针)找到相应的存储单元;LDRR0,R1;R0=R1SWPR1,R1,R2;R1 R20 x55R0R10 x400000000 xAA0 x400000000 xAA内存单元内存单元yyyy-M-d11/95基址变址寻址基址变址寻址1.操作数存放在内存单元中;2.指令地
9、址码字段给出 寄存器编号(名)和偏移量;3.指令执行时将基址寄存器的内容与偏移量(4K)相加/减,形成操作数的有效地址。4.常用于查表、数组操作、功能部件寄存器访问等。LDRR2,R3,#0 x0C ;R2=R3+0 x0CLDR R1,R0,#-4!;R1=R0-4,R0=R0-4LDR R0,R1,#4 ;R0=R1,R1R14LDR R0,R1,R2 ;R0=R1+R2前索引前索引后索引后索引0 x55R2R30 x400000000 xAA0 x4000000C0 xAA内存单元内存单元12/95多寄存器寻址多寄存器寻址/块复制寻址块复制寻址1.操作数存放在内存单元中;2.指令地址码字
10、段给出 寄存器编号(名)列表;3.编号高的寄存器总是对应内存中的高地址单元;4.可完成存储块和16个寄存器或其子集之间的数据传送。LDMIAR1!,R2-R4,R6 ;R2=R1,R3=R1+4;R4=R1+8,R6=R1+C,R1=R1+10 STMDBR1,R2-R4,R6 ;R1-4=R6,R1-8=R4;R1-C=R3,R1-10=R20 x40000000R1R20 x?0 x010 x400000000 x?R3R40 x?R60 x?0 x020 x030 x040 x400000040 x400000080 x4000000C0 x010 x020 x030 x040 x400
11、00010内存单元内存单元Increase AfterDecrease Before堆堆 栈栈 寻寻 址址1.操作数存放在内存栈顶单元中;2.指令地址码字段固定使用栈顶指针SP;3.指令执行时同多寄存器/块寻址,可完成多个数据的入栈和出栈;LDMEASP!,R2-R4,R6 ;R2=SP,R3=SP+4;R4=SP+8,R6=SP+C,SP=SP+10 STMFDSP!,R2-R4,R6 ;SP-4=R6,SP-8=R4 ;SP-C=R3,SP-10=R2,SP b)a+;Elseb+;对应的汇编代码:对应的汇编代码:CMPR0,R1 ;比较比较R0(a)与)与R1(b)ADDHIR0,R0,
12、#1 ;若若R0R1,则,则R0=R0+1ADDLSR1,R1,#1 ;若若R0R1,则,则R1=R1+1yyyy-M-d19/95ARM指令集 数据处理指令 转移指令 程序状态寄存器访问指令 加载/存储指令数据处理指令的编码格式数据处理指令的编码格式指令条件码I=1I=1:立即数;:立即数;I=0I=0:寄存器移位:寄存器移位第二操作数RdRd目标寄存器目标寄存器RnRn第一操作数寄存器第一操作数寄存器S=1S=1:根据结果设置:根据结果设置CPSRCPSR中的条件码中的条件码S=0S=0:不设置:不设置CPSRCPSR中的条件码中的条件码带进位加法带进位加法ADCADC01010101带进
13、位减法指令带进位减法指令SBCSBC01100110带进位逆向减法指令带进位逆向减法指令RSCRSC01110111位测试指令位测试指令TSTTST10001000相等测试指令相等测试指令TEQTEQ10011001比较指令比较指令CMPCMP10101010负数比较指令负数比较指令CMNCMN10111011逻辑或操作指令逻辑或操作指令ORRORR11001100数据传送数据传送MOVMOV11011101位清除指令位清除指令BICBIC11101110数据非传送数据非传送MVNMVN11111111加法运算指令加法运算指令ADDADD01000100逆向减法指令逆向减法指令RSBRSB00
14、110011减法运算指令减法运算指令SUBSUB00100010逻辑异或操作指令逻辑异或操作指令EOREOR00010001逻辑与操作指令逻辑与操作指令ANDAND00000000说明说明指令助记符指令助记符操作码操作码21/95乘法指令的编码格式乘法指令的编码格式RmRm被乘数寄存器被乘数寄存器RnRn:MLA:MLA指令相加的寄存器指令相加的寄存器RdLoRdLo:64:64位乘法指令目标寄位乘法指令目标寄存器的低存器的低3232位位Rd:Rd:目标寄存器目标寄存器RdHiRdHi:64:64位乘法指令目标寄存器的高位乘法指令目标寄存器的高3232位位RsRs为乘数寄存器为乘数寄存器64位
15、有符号乘加指令位有符号乘加指令SMLAL11164位有符号乘法指令位有符号乘法指令SMULL11064位无符号乘加指令位无符号乘加指令UMLAL10164位无符号乘法指令位无符号乘法指令UMULL10032位乘加指令位乘加指令MLA00132位乘法指令位乘法指令MUL000说明说明指令助记符指令助记符操作码操作码yyyy-M-d22/95单数据存取指令的编码格式单数据存取指令的编码格式字和无符号字节存取指令字和无符号字节存取指令LDR/STRLDR/STRP P表示前表示前/后变址后变址U=1:U=1:加加 U=0:U=0:减减B=0B=0:字:字 B=1B=1:字节:字节W=1W=1:回写基
16、址寄存器,对:回写基址寄存器,对应指令中的应指令中的“!”W=0W=0:不回写:不回写存储单元寻址方式存储单元寻址方式L=1L=1:加载:加载 L=0L=0:存储:存储RdRd为源为源/目标寄存器目标寄存器RnRn为基址寄存器为基址寄存器S=1:S=1:有符号数,有符号数,S=0:S=0:无符号数无符号数H=1H=1:半字,:半字,H=0H=0:字节:字节存储单元寻址方式存储单元寻址方式半字和有符号字节存取指令半字和有符号字节存取指令LDR/STRLDR/STRI=1I=1立即数立即数 I=0I=0寄存器移位寄存器移位23/95数据块数据块(多寄存器多寄存器)存取指令的编码格式存取指令的编码格
17、式数据块(多寄存器)存取指令编码数据块(多寄存器)存取指令编码LDM/STMLDM/STMS S对应于指令中的对应于指令中的”符号:在恢复符号:在恢复PCPC时也时也同时恢复同时恢复SPSRSPSRP P表示前表示前/后变址后变址U U表示加表示加/减减WW表示回写表示回写(!)(!)寄存器列表寄存器列表RnRn为基址寄存器为基址寄存器L=1:L=1:加载加载 L=0:L=0:存储存储yyyy-M-d24/95寄存器寄存器/存储器交换指令的编码格式存储器交换指令的编码格式B B用于区别无符号字节用于区别无符号字节(B B为为1 1)或字()或字(B B为为0 0)Rm源寄存器Rd目标寄存器Rn
18、为基址寄存器SWPR1,R1,R0;R1R1 R0R0SWPB R1,R2,R0;将将R0R0指向的存储单元低字节指向的存储单元低字节数据读数据读;取到取到R1R1中中(高高2424位清零位清零),并将,并将R2R2的的;内容写入到该内存单元中的最低字节内容写入到该内存单元中的最低字节yyyy-M-d25/95分支指令的编码格式分支指令的编码格式分支指令分支指令B/BLB/BL指令编码格式指令编码格式L=0L=0:B B指令,跳转指令,跳转L=1L=1:BLBL指令,保存指令,保存PCPC并跳转,可返回并跳转,可返回2424位有符号立即数位有符号立即数(偏移量)(偏移量)分支指令分支指令BXB
19、X指令编码格式指令编码格式RmRm目标地址寄存器,该寄存器装载目标地址寄存器,该寄存器装载3131位跳位跳转地址,最低位为转地址,最低位为1 1时切换到时切换到ThumbThumb状态状态yyyy-M-d26/95状态寄存器访问指令的编码格式状态寄存器访问指令的编码格式指定传送的区域,可以为以下字母指定传送的区域,可以为以下字母(必须小写)的一个或者组合:(必须小写)的一个或者组合:c c 控制域屏蔽字节控制域屏蔽字节(psr7.0)(psr7.0)x x 扩展域屏蔽字节扩展域屏蔽字节(psr15.8)(psr15.8)s s 状态域屏蔽字节状态域屏蔽字节(psr23.16)(psr23.16
20、)f f 标志域屏蔽字节标志域屏蔽字节(psr31.24)(psr31.24)要传送到状态寄存要传送到状态寄存器指定域的立即数器指定域的立即数MSRMSR指令编码指令编码1 1MSRMSR指令编码指令编码2 28 8位立即数位立即数目标寄存器,不能为目标寄存器,不能为R15R15R R 0 0:CPSR CPSR R R 1 1:SPSRSPSRMRSMRS指令编码指令编码立即数立即数移位次数移位次数yyyy-M-d软中断指令的编码格式软中断指令的编码格式SWIcond immed_24指令执行的条件码指令传递的参数(指令传递的参数(2424位立即数,其值位立即数,其值为为0 02 22424
21、1 1););执行时执行时CPUCPU忽略该参数,交忽略该参数,交OSOS处理。处理。yyyy-M-d28/95数据处理指令数据处理指令 ARMARM的数据处理指令大致可分为以下几类:的数据处理指令大致可分为以下几类:数据传送指令数据传送指令:MOVMOV、MVNMVN 算术运算指令算术运算指令:ADDADD、SUBSUB、RSBRSB、ADCADC、SBCSBC、RSCRSC、MULMUL、MLAMLA、UMULLUMULL、UMLALUMLAL、SMULLSMULL、SMLALSMLAL 逻辑运算指令逻辑运算指令 :ANDAND、ORRORR、EOREOR、BICBIC 比较指令比较指令:
22、CMPCMP、CMNCMN、TSTTST、TEQTEQv 数据处理指令只能对数据处理指令只能对寄存器寄存器的内容进行操作,而不的内容进行操作,而不能对内存中的数据进行操作。能对内存中的数据进行操作。v 所有所有ARMARM数据处理指令均可选择使用数据处理指令均可选择使用S S后缀,以使指后缀,以使指令影响状态标志。令影响状态标志。29/95数据传送指令数据传送指令MOV R11,#0 xF000000B;R1=0 xF000000B MOV R0,R1;R0=R1 MOVS R3,R1,LSL#2;R3=R12,并影响标志位,并影响标志位 MOV PC,LR;PC=LR,子程序返回,子程序返回
23、 MVN R1,#0 xFF;R1=0 xFFFFFF00MVN R1,R2;将将R2按位取反,结果存到按位取反,结果存到R1指 令 格 式说 明操 作MOVcondS Rd,operand2数据传送Rdoperand2 MVNcondS Rd,operand2数据非传送Rd(operand2)v 当有后缀当有后缀S S时指令将根据结果更新标志时指令将根据结果更新标志NN和和Z Z,在计算,在计算operand2operand2(8 8位立即数或寄存器位立即数或寄存器)时更新标志时更新标志C C,不影响标志,不影响标志V V。v MVN MVN指令具有取反功能,所以可以装载范围更广的立即数。指
24、令具有取反功能,所以可以装载范围更广的立即数。30/95算术运算指令算术运算指令指 令 格 式说 明操 作ADDcondS Rd,Rn,operand2加法RdRn+operand2SUBcondS Rd,Rn,operand2减法RdRn-operand2RSBcondS Rd,Rn,operand2逆向减法Rdoperand2-RnADCcondS Rd,Rn,operand2带进位加法RdRn+operand2+CSBCcondS Rd,Rn,operand2带进位减法RdRn-operand2-CRSCcondS Rd,Rn,operand2带进位逆向减法Rdoperand2-Rn-C
25、可影可影响响NN,Z Z,C C和和V V标标志位。志位。ADDSR1,R1,#1020;R1=R1+1020,并影响标志位,并影响标志位ADDR1,R1,R2,LSL#2;R1=R1+R210,则比较则比较R1与与R2,并设置相关标志位,并设置相关标志位CMNR0,#1;比较比较R0与与-1,判断,判断R0是否为是否为1的补码的补码-1,是则设置,是则设置Z标志标志TSTR1,#0 x0F;判断判断R1的低的低4位是否为位是否为0 TEQR0,R1;较较R0与与R1是否相等是否相等(不影响不影响V位和位和C位位)TST指令的下一条指令常与指令的下一条指令常与EQ、NE条件码配合使用:当所条件
展开阅读全文