ARM汇编语言中部分指令英文全称及功能

指令格式:  指令{条件}{S} {目的Register},{OP1},{OP2} 

 "{ }"中的内容可选。即,可以不带条件只有目的寄存器,或只有目的寄存器和操作数1,也可以同时包含所有选项。

“S” 决定指令的操作是否影响CPSR中条件标志位的值,当没有S时,指令不更新CPSR中条件标志位的值。


助记符英文全称示例、功能



BBranchB  Label    ;程序无条件跳转到标号Label处执行
跳转指令
BLBranch with LinkBL Label ;当程序无条件跳转到标号Label处执行时,同时将当前的PC值保存到R14中
带返回的跳转指令
BLXBranch with Link and exchangeBLX  Label ;从ARM指令集跳转到指令中所指定的目标地址,并将处理器的工作状态有ARM状态切换到Thumb状态,该指令同时将PC的当前内容保存到寄存器R14中
带返回和状态切换的跳转指令
BXBranch and exchangeBX  Label;跳转到指令中所指定的目标地址,目标地址处的指令既可以是ARM指令,也可以是Thumb指令
带状态切换的跳转指令





MOVMoveMOV R1,R0,LSL#3 ;将寄存器R0的值左移3位后传送到R1
数据传送
MVNMove NOTMVN R0,#0 ;将立即数0取反传送到寄存器R0中,完成后R0=-1
数据非传送
CMPCompareCMP R1,R0  ;将寄存器R1的值与寄存器R0的值相减,并根据结果设置CPSR的标志位
比较指令
CMNCompare negativeCMN R1,R0  ;将寄存器R1的值与寄存器R0的值相加,并根据结果设置CPSR的标志位
负数比较指令
TSTTestTST R1,#0xffe ;将寄存器R1的值与立即数0xffe按位与,并根据结果设置CPSR的标志位
位测试指令
TEQTest equivalenceTEQ R1,R2 ;将寄存器R1的值与寄存器R2的值按位异或,并根据结果设置CPSR的标志位
相等测试指令
ADDAddADD R0,R2,R3,LSL#1   ; R0 = R2 + (R3 << 1)
加法运算指令
ADCAdd with carryADCS    R2,R6,R10 ; R2 = R6+R10+!C,且更新CPSR的进位标志位
带进位加法
SUBSubtractSUB  R0,R1,#256   ; R0 = R1 – 256
减法运算指令
SBCSubtract with carrySUBS R0,R1,R2; R0 = R1 - R2 - !C,并根据结果设置CPSR的进位标志位
带进位减法指令
RSBReverse subtractRSB R0,R1,R2;R0 = R2 – R1
逆向减法指令
RSCReverse subtract with carryRSC R0,R1,R2  ; R0 = R2 – R1 - !C
带进位逆向减法指令
ANDAndAND R0,R0,#3 ;该指令保持R0的0、1位,其余位清零。
逻辑与操作指令
ORRORORR R0,R0,#3 ;该指令设置R0的0、1位,其余位保持不变。
逻辑或操作指令
EORExclusive OREOR R0,R0,#3 ; 该指令反转R0的0、1位,其余位保持不变。
逻辑异或操作指令
BICBit clearBIC R0,R0,#0b1011 ; 该指令清除 R0 中的位 0、1、和 3,其余的位保持不变。
位清除指令
CLZCount Leading Zeros计算操作数最高端0的个数
前导零计数



MULMultiply with signed or unsigned 32-bit operandsMUL R0,R1,R2  ;R0 = R1 × R2
32位乘法指令
MLAMultiply-Accumulate with signed or unsigned 32-bit operandsMLAS R0,R1,R2,R3 ;R0 = R1 × R2 + R3,同时设置CPSR中的相关条件标志位
32位乘加指令
SMULLSigned Long Multiply, with 32-bit operands and 64-bit result.SMULL   R0,R1,R2,R3  ;R0 = (R2 × R3)的低32位 R1 = (R2 × R3)的高32位
64位有符号数乘法指令
SMLALSigned Long Multiply, with optional Accumulate, with 32-bit operands, and 64-bit result and accumulatorSMLAL   R0,R1,R2,R3  ;R0 =(R2 × R3)的低32位+R0; R1 =(R2 × R3)的高32位+ R1
64位有符号数乘加指令
UMULLUnsigned multiply longUMULL   R0,R1,R2,R3  ;R0 = (R2 × R3)的低32位;R1 =(R2 × R3)的高32位
64位无符号数乘法指令
UMLALUnsigned mul&accumulate lonUMLAL   R0,R1,R2,R3  ;R0 =(R2 × R3)的低位+R0;R1 =(R2 × R3)的高32位+R1
64位无符号数乘法指令
PSR
访问
指令
MRSMove PSR to registerMRS R0,CPSR ;传送CPSR的内容到R0
程序状态寄存器到通用寄存器的数据传送指令
MSRMove register to PSRMSR CPSR_c ,R0 ;传送R0的内容到SPSR,但仅仅修改CPSR中的控制位域
通用寄存器到程序状态寄存器的数据传送指令
 加载/
存储
指令
LDRLoad wordLDR R0,[R1,R2]!;将存储器地址为R1+R2的字数据读入R0,并将新地址R1+R2写入R1。
字数据加载指令
LDRBLoad byteLDRB R0,[R1,#8] ;将存储器地址为R1+8的字节数据读入R0,并将R0的高24位清零
字节数据加载指令
LDRHLoad half wordLDRH  R0,[R1] ;将存储器地址为R1的半字数据读入寄存器R0,并将R0的高16位清零
半字数据加载指令
LDMLoad multipleLDMFD  R13!,{R0,R4-R12,PC} ;将堆栈内容恢复到寄存器(R0,R4到R12,LR)
批量数据加载指令
STRStoreSTR R0,[R1],#8 ;将R0中的字数据写入R1为地址的存储器中,并将新地址R1+8写入R1
字数据存储指令
STRBStore byteSTRB R0,[R1,#8]  ;将寄存器R0中的字节数据写入以R1+8为地址的存储器中
字节数据加载存储指令
STRHStore half wordSTRH R0,[R1,#8] ;将寄存器R0中的半字数据写入以R1+8为地址的存储器中
半字数据存储指令
STMStore multipleSTMFD R13!,{R0,R4-R12,LR}   ;将寄存器列表中的寄存器(R0,R4到R12,LR)存入堆栈
批量数据存储指令
数据
交换
指令
SWPSwap wordSWP R0,R1,[R2] ;R2所指的字数据传送到R0,同时R1的数据传送到R2所指的单元
字数据交换指令
SWPBSwap byteSWPB R0,R1,[R2];R2所指的字节数据传送到R0,R0高24位清零,同时R1低8位送R2所指单元。
字节数据交换指令



LSLLogic shift leftMOV  R0, R1,ASL#2;将R1中的内容左移两位后传送到R0中,低位用0填充
逻辑左移操作
ASLArithmetic shift leftMOV  R0, R1, LSL#2 ;将R1中的内容左移两位后传送到R0中,低位用0填充
算术左移操作
LSRLogic shift rightMOV R0, R1, LSR#2 ;将R1中的内容右移两位后传送到R0中,左端用零来填充
逻辑右移操作
ASRArithmetic shift rightMOV R0, R1, ASR#2 ;将R1中的内容右移两位后传送到R0中,左端用第31位的值来填充
算术右移操作
RORRotate rightMOV R0, R1, ROR#2   ;将R1中的内容循环右移两位后传送到R0中
循环右移操作
RRXRotate Right with ExtendRRX{S}{cond} Rd, Rm ;左端用进位标志位C来填充
带拓展的循环右移操作
协处理器CDPCoprocessor data operationsCDP{cond} coproc, #opcode1, CRd, CRn, CRm{, #opcode2} 
协处理器数据操作指令
LDCLoad to CoprocessorLDC{cond} coproc, CRd, [Rn]
协处理器数据加载指令
STCStore to Coprocessorop{L}{cond} coproc, CRd, [Rn]
协处理器数据存储指令
MCRMove to Coprocessor from ARM RegisterMCR{cond} coproc, #opcode1, Rt, CRn, CRm{, #opcode2}
处理器寄存器到协处理器寄存器的数据传送指令
MRCMove to ARM Register from CoprocessorMRC{cond} coproc, #opcode1, Rt, CRn, CRm{, #opcode2}
协处理器寄存器到处理器寄存器的数据传送指令
  • 12
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值