跳转指令,完成向前后向后32M跳转
B跳转 BL带返回的跳转 BLX带返回和状态切换的跳转 BX带状态切换的跳转
B{条件} 目标地址
BL{条件} 目标地址, 跳转时会保存当前pc值到R14
数据传送指令
MOV{条件}{S} 目的寄存器,源操作数 有s就会影响CPSR中的条件标识位
MOV R0,R1 将R1值赋给R0
MOV R0,R1,LSL #3 将R1值左移3位,赋值给R0
MVN{条件}{S} 目的寄存器,源操作数 mvn与mov不同之处是,赋值之前将源操作数取反
MVN R0, #0xff R0=0xffffff00
CMP{条件} 操作数1,操作数2 一个寄存器的内容与另一个寄存器的内容或立即数比较,并改变CPSR中的标志位
TST{条件} 操作数1,操作数2 一个寄存器的内容和另一个寄存器的内容或立即数按位与,并根据结果改变CPSR
TST R1,#%1 测试R1是否设置最低位(%表示二进制)
ADD{条件}{S} 目的寄存器,操作数1,操作数2 加法,结果存放目的寄存器,操作数1必须是寄存器
ADD R0,R1,R2
ADD R0,R1,#2
ADD R0,R1,R2, LSL #3
SUB{条件}{S} 目的寄存器,操作数1,操作数2 减法,结果存放目的寄存器,操作数1必须是寄存器
SUB R0,R1,R2
SUB R0,R1,#2
SUB R0,R1,R2, LSL #3
SUB R0,R1,R2
SUB R0,R1,#2
SUB R0,R1,R2, LSL #3
AND{条件}{S} 目的寄存器,操作数1,操作数2 逻辑与,结果存放目的寄存器,操作数1必须是寄存器
AND R0,R1,#3
AND R0,R1,#3
ORR{条件}{S} 目的寄存器,操作数1,操作数2 逻辑或,结果存放目的寄存器,操作数1必须是寄存器
AND R0,R1,#3
AND R0,R1,#3
BIC{条件}{S} 目的寄存器,操作数1,操作数2 清除 ,结果存放目的寄存器,操作数1必须是寄存器
AND R0,R1,#%1011 将R1的第0、1、3位清零,其余位不变
AND R0,R1,#%1011 将R1的第0、1、3位清零,其余位不变
MUL{条件}{S} 目的寄存器,操作数1,操作数2 逻辑与,结果存放目的寄存器,操作数1必须是寄存器
MU R0,R1,R2
MU R0,R1,R2
MRS{条件}通用寄存器,程序状态寄存器
MSR{条件}程序状态寄存器,通用寄存器
MSR CPSR/SPSR_,通用寄存器
[31:24] 条件标识位域f [23:16]状态位域s [15:8]扩展位域x [7:0]控制位域c
加载/存储
LDR{条件} 目的寄存器, 将存储器中的一个32位字数据传送到目的寄存器
LDR R0 ,[R1]
LDR R0 ,[R1,R2]
LDR R0 ,[R1,#8]
LDR R0 ,[R1,R2]!
LDRB R0 ,[R1] 只取8位字节,高24位清零
LDRH R0 ,[R1] 加载16位半字数据,高16位清零
STR{条件} 源寄存器, 将寄存器数据存储在存储器
LDM{条件}{类型} 基址寄存器{!}, 寄存器列表{^} 批量加载
SWP{条件} 目的寄存器,源寄存器1,【源寄存器2】 字数据交换
SWP R0,R1, [R2 ] 将R2所指的存储单元数据送到R0,将R1数据送到R2所指的存储单元
SWPB{条件} 目的寄存器,源寄存器1,【源寄存器2】 字节数据交换
移位操作(通用寄存器或者立即数)
LSL 逻辑左移 ASL 算数左移 LSR 逻辑右移 ASR 算术右移
ROR 循环右移
LSL=ASL
异常产生指令
SWI 软件中断 BKPT 断点中断
SWI 0x02 调用操作系统编号为02的系统例程