ARM指令

1. 汇编指令格式

1.1 基本格式

<OPCODE>{COND}{S} {Rd},{Rn}{,operand2}

<>内的项是必须的,{}内的项是可选的

  • OPCODE:指令操作码,如LDRSTR等。是必需的。
  • CODE:指令执行的条件码,如EQNE等。是可选的。
  • S:是否影响CPSR寄存器的值,有则影响,否则不影响。
  • Rd:目标寄存器。
  • Rn:第2个操作数,该操作数可以是立即数,或寄存器或寄存器移位。

1.2 第二个操作数(operand2)

  • 8b位图

operand2可以是8b位图:由一个8b的无符号数,在前面填充24个0后形成32位数,循环移位偶数位得到的32位数。

举例:

MOV R0,#1               ;R0=1
AND R1,R2,#0X0F         ;R2进行0x0F逻辑与运算,结果保存在R1
LDR R0,[R1],#-4         ;读取R1地址中存储器单元内容到R0,且R1=R1-4
  • Rm

operand2为寄存器时,操作数为寄存器中的数值。

举例:

SUB R1,R1,R2            ;R1-R2->R1
LDR R0,[R1],-R2         ;读取R1地址中存储器单元的内容存入R0,且R1=R1-R2
  • Rm,Shift

operand2为寄存器移位,操作数为寄存器的移位结果,担Rm的值不变。移位方式如下:

LSL #n 逻辑左移n位(0<=n<=31)
LSR #n 逻辑右移n位(1<=n<=32)
ASR #n 算术右移n位(1<=n<=32)
ROR #n 循环右移n位(1<=n<=31)
RRX 带进位的循环右移一位

偏移量可为立即数或寄存器,举例:

ADD R1,R1,R1,LSL #3     ;R1=R1x9
MOV PC,R0               ;R2进行0x0F逻辑与运算,结果保存在R1
SUB R1,R1,R2,LSR R3     ;R1减去R2逻辑右移R3位,然后存入R1

1.3 条件码(cond)

ARM条件码

条件码助记符 标志 含义
EQ Z=1 相等
NE Z=0 不相等
CS/HS C=1 无符号数大于或等于
CC/LO C=- 无符号数小于
MI N=1 负数
PL N=0 正数或零
VS V=1 溢出
VC V=0 没有溢出
HI C=1,Z=0 无符号数大于
LS C=0,Z=1 无符号数小于或等于
GE N=V 带符号数大于或等于
LT N!=V 带符号数小于
GT Z=0,N=V 带符号数大于
LE Z=1或N!=V 带符号数小于或等于
AL 任何 无条件执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值