《ARM汇编指令》PPT课件.ppt
《《ARM汇编指令》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《ARM汇编指令》PPT课件.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、8.1 ARM8.1 ARM寻址方式寻址方式1.1.立即数寻址立即数寻址操作数由指令直接给出操作数由指令直接给出 MOV R0,#0 xFFMOV R0,#0 xFF;R0 0 xFF;R0 0 xFFADD R0,R0,#300ADD R0,R0,#300;R0 300;R0 3002.寄存器寻址 操作数存放在寄存器中 ADD R0,R1,R2;R0R1+R23.寄存器移位寻址寄存器中数据移位后形成操作数 ADD R0,R1,R2 LSR#2;R0R1+R244.寄存器间接寻址 操作数地址由寄存器给出例MOV R2,#0 xC0000018STR R1,R20 x000053A10 x000
2、053A10 xC00000100 xC00000140 xC00000180 xC000001C0 xC00000200 xC0000018R20 x000053A1R15.基址变址寻址 寄存器内容与指令给出的偏移量相加形成操作数地址LDR R0,R1,#4;R0R1+4LDR R0,R1,#4;R0R1,R1R1+4LDR R0,R1,R2;R0R1+R2偏移量由12位表示,即范围4K6.多寄存器寻址 完成多个寄存器传送(多达16个寄存器)LDMIA R0,R1,R3-R5;R1R0,R3R0+4;R4R0+8,R5R0+12数据数据数据数据A A数据数据数据数据B B数据数据数据数据C
3、C 数据数据数据数据D D数据数据数据数据A A数据数据数据数据B B数据数据数据数据C C 数据数据数据数据D D0 x00100200R00 x001002000 x001002040 x001002080 x0010020CR1R3R4R57.相对寻址PC为基地址,指令中地址标号为偏移量,二者相加形成操作数有效地址。BL next8.堆栈寻址SP 指示栈顶位置,4种堆栈操作0 x123456780 x12345678空空空空SP栈底满递减堆栈空递减堆栈0 x123456780 x12345678空空空空SP栈底地址递增空空空空0 x12345678 0 x12345678 SP栈底空递增
4、堆栈空空空空0 x12345678 0 x12345678 SP栈底满递增堆栈8.2 ARM8.2 ARM指令格式指令格式u 基本指令格式基本指令格式s,操作码条件域(执行该指令要满足的条件)要否影响程序状态寄存器(CPSR)目的寄存器第一源操作数,必须是寄存器第二源操作数1可选2 指令长度32bit3 数据处理类指令通过寄存器移位寻址实现移位操作,ARM不单独提供移位指令4 除Load/Store类指令,其余指令均不能涉及存储器操作数 说明s,操作码操作码条件助记符条件助记符标志标志含义含义00000000EQEQZ=1Z=1相等相等00010001NENEZ=0Z=0不相等不相等00100
5、010CS/HSCS/HSC=1C=1无符号数大于或等于无符号数大于或等于00110011CC/LOCC/LOC=0C=0无符号数小于无符号数小于01000100MIMIN=1N=1负数负数01010101PLPLN=0N=0正数或零正数或零01100110VSVSV=1V=1溢出溢出01110111VCVCV=0V=0没有溢出没有溢出10001000HIHIC=1,Z=0C=1,Z=0无符号数大于无符号数大于10011001LSLSC=0,Z=1C=0,Z=1无符号数小于或等于无符号数小于或等于10101010GEGEN=VN=V有符号数大于或等于有符号数大于或等于 10111011LTLT
6、N!=VN!=V有符号数小于有符号数小于 11001100GTGTZ=0,N=VZ=0,N=V有符号数大于有符号数大于 11011101LELEZ=1,N!=VZ=1,N!=V有符号数小于或等于有符号数小于或等于 11101110ALAL任何任何无条件执行无条件执行(指令默认条件指令默认条件)11111111NVNV任何任何从不执行从不执行(不要使用不要使用)对应的汇编代码:CMP R0,R1 ;比较R0(a)与R1(b)ADDHI R0,R0,#1 ;若R0R1,则R0=R0+1ADDLS R1,R1,#1 ;若R0R1,则R1=R1+1C C代码:代码:If(a b)a+;Elseb+;s
7、,中的32位立即数是由8位常数在32位宽度经过偶数次循环右移得到(指令解码后中保存指令解码后中保存该常数和移位该常数和移位信息信息);能通过上述算法得到的立即数是有效的,否则无效。u 关于关于数据处理指令中的有三种形式:#imm(立即数寻址)Rm(寄存器寻址)Rm shift(寄存器移位寻址)condcond 0 00 01 1 opcodeopcode s sRnRn RdRd Rotate_immRotate_immImmed_8Immed_8 4 4 1 4 4 4 8u 关于移位操作关于移位操作移位不额外花费时间,且Rm不受影响移位次数由立即数或Rs决定桶形移位器桶形移位器ALURd预
8、预处处理理第一第一源操源操作数作数RmRnMSB Rm LSB0MSB Rm LSB0MSB Rm LSBMSB Rm LSBCMSB Rm LSBRm,shift 的具体形式LSLASRLSRRORRRXCCC桶形移位器的操作桶形移位器的操作助记符助记符功能功能移位值移位值LSL#imm/RsLSL#imm/Rs逻辑左移逻辑左移#031 or Rs#031 or RsLSR#imm/RsLSR#imm/Rs逻辑右移逻辑右移#031 or Rs#031 or RsASR#imm/RsASR#imm/Rs算术右移算术右移#031 or Rs#031 or RsROR#imm/RsROR#imm/
9、Rs循环逻辑右移循环逻辑右移#131 or Rs#131 or RsRRXRRX扩展循环右移扩展循环右移1 1ADDR1,R1,R1,LSL#3 ;R1=R1+R13SUBR1,R1,R2,LSR R3 ;R1=R1-R2R3ARM指令一般格式 condcondopcodeopcodes sRnRn RdRd Rotate_immRotate_immImmed_8Immed_8条件域代码域第一操作数(基址寄存器)目的寄存器第二操作数31 28 27 21 20 19 1615 1211 0数据处理指令程序状态寄存器访问指令加载/存储指令跳转指令协处理器指令异常中断产生指令8.3 ARM8.3
10、ARM指令集指令集u数据处理指令数据处理指令数据处理指令数据处理指令1 数据传送缺省缺省s=0不更新不更新CPSR标志位标志位立即数立即数/寄存器寄存器MOVs,MOVs,数据传送数据传送Rdop2Rdop2MVNs,MVNs,数据取非传送数据取非传送Rdop2Rdop2MOV R1,R0;R1R0MOV R0,#0d32;R032MOV R1,R0,LSL#3;R1R0*8MVNR0,#4;R0-5例MVN用于用于向寄存器送负数向寄存器送负数生成掩码生成掩码求反码求反码2 算数运算指指 令令 格格 式式说说 明明操操 作作ADDADDsconds Rd,Rn,op2 Rd,Rn,op2加法加
11、法RdRn+op2RdRn+op2ADCADCss Rd,Rn,op2 Rd,Rn,op2带进位加法带进位加法RdRn+op2+CRdRn+op2+CSUBSUBss Rd,Rn,op2 Rd,Rn,op2减法减法RdRn-op2RdRn-op2SBCSBCss Rd,Rn,op2 Rd,Rn,op2带进位减法带进位减法RdRn-op2-CRdRn-op2-CRSBRSBss Rd,Rn,op2 Rd,Rn,op2逆向减法逆向减法Rdop2-RnRdop2-RnRSCRSCss Rd,Rn,op2 Rd,Rn,op2带进位逆向减法带进位逆向减法Rdop2-Rn-CRdop2-Rn-C说明选s,
12、影响NVCZ标志,除非Rd=R15(异常模式下,恢复标志);对标志C的影响:ADD/ADC C=1 有进位,C=0 无进位;SUB/SBC/RSC C=1 无借位,C=0 有借位例ADDS R1,R1,#1020;R1R1+1020,并影响标志位ADDR1,R1,R2,LSL#2;R1R1+R22SUBS R0,R0,#240;R0R0-240,并影响标志位 SUBS R2,R1,R2;R2R1-R2,并影响标志位RSB R3,R1,#0 xFF00 ;R30 xFF00-R164位数相加:结果存放R1、R0ADDS R0,R0,R2;R0低32位相加,并影响标志位ADCR1,R1,R3;R1
13、高32位和+CRSBS R2,R0,#0 ;R2=-R0RSCR3,R1,#0 ;R3=-R1-C3 比较运算指指 令令 格格 式式说说 明明操操 作作CMPCMP cond Rn,op2Rn,op2比较比较Rn-op2Rn-op2CMNCMN cond Rn,op2Rn,op2负数比较负数比较Rn-(-op2)Rn-(-op2)说明Rn(寄存器)减去op2(寄存器/立即数),结果不保留,影响标志(参数s无需显式)。CMP R1,R2CMP R0,#50CMN R1,R2例4 逻辑/测试运算指指 令令 格格 式式说说 明明操操 作作ANDANDsconds Rd,Rn,op2 Rd,Rn,op
14、2逻辑与操作逻辑与操作RdRn&op2RdRn&op2ORRORRsconds Rd,Rn,op2 Rd,Rn,op2逻辑或操作逻辑或操作RdRn|op2RdRn|op2EOREORsconds Rd,Rn,op2 Rd,Rn,op2逻辑异或操作逻辑异或操作RdRn op2RdRn op2BICBICsconds Rd,Rn,op2 Rd,Rn,op2位清除位清除RdRn&(op2)RdRn&(op2)TSTTST Rn,op2Rn,op2位测试指令位测试指令标标志志Rn&op2Rn&op2TEQTEQ cond Rn,op2Rn,op2相等测试指令相等测试指令标标志志Rn op2Rn op2
15、AND运算通常用于某些位置0;ORR运算通常用于某些位置1;EOR运算通常用于某些位取反;TST/TEQ与AND/EOR作相同运算,影响标志,不保留结果。例AND R0,R0,#3;R0高位清零,保留最低2位AND R0,R1,#0 xFFFF0000;留R1高16位,存入R0EORNZ R3,R3,#0 x0000000F;上一结果不为零,将R3低4位取反BIC R0,R0,#3;保留R0高位,最低2位清零将R2的高8位移入到R3低8位MOV R1,R2,LSR#24 ORR R3,R1,R3,LSL#8TST R0,#1;R0=偶数?TEQ R0,R1;根据Z标志判断,Z=1R0=R1?5
16、 乘法运算MULMULss Rd,Rm,Rs Rd,Rm,RsRdRm*Rs 32RdRm*Rs 32位乘法位乘法 MLA MLA ss Rd,Rm,Rs,Rn Rd,Rm,Rs,RnRdRm*Rs+Rn 32RdRm*Rs+Rn 32位乘加位乘加 UMULL UMULL ss RdLo,RdHi,Rm,Rs RdLo,RdHi,Rm,Rs(RdLo,RdHi)Rm*Rs 64(RdLo,RdHi)Rm*Rs 64位无符号乘法位无符号乘法UMLAL UMLAL ss RdLo,RdHi,Rm,Rs RdLo,RdHi,Rm,Rs(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)64(Rd
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM汇编指令 ARM 汇编 指令 PPT 课件
限制150内