①mov r1,#0b0110
pic r1,#0b0100
此时r1的值为0b0010
pic执行掩码操作
pic r1,#0b0100
此时r1的值为0b0010
pic执行掩码操作
②tst 按位与 若为0置cpsr的zero位为1
③cmp r1,r2 r1-r2(cpsr)若小于0置n,等于0置zero
④bl用于保存当前函数入口地址到lr
mov r1,#2
cmp r1,#1
bl func1
....
func1:
mov r1,#2
mov r2,#3
mov pc,lr
mov r1,#2
cmp r1,#1
bl func1
....
func1:
mov r1,#2
mov r2,#3
mov pc,lr
⑤移位指令
mov r1,#0b1
mov r1,r1,lsl#2 @lsl左移指令
此时r1的值为0b100
mov r1,#0b11
mov r1,r1,ror#1 @ror循环的右移
此时r1的值为0x10000001
mov r1,#0b1
mov r1,r1,lsl#2 @lsl左移指令
此时r1的值为0b100
mov r1,#0b11
mov r1,r1,ror#1 @ror循环的右移
此时r1的值为0x10000001
⑥mrs操作cpsr(程序状态字寄存器)
mrs r0,cpsr
orr r0,0b100(orr,位与)
msr cpsr,r0
mrs r0,cpsr
orr r0,0b100(orr,位与)
msr cpsr,r0
⑦存储器访问指令(ldr,str等)
ldr(内存到寄存器)
str(寄存器到内存)
ldr(内存到寄存器)
str(寄存器到内存)
mov r1,#0x30001000
mov r0,#0xff
str r0,[r1](带[]表示间接寻址)
mov r0,#0xff
str r0,[r1](带[]表示间接寻址)
⑧机器码
0000(cond) 00(保留) 0 0000(opcode) 0(s) 0000(rn) 0000(rd) 000000000000(shifter_operand)
条件 保留位 标志位(0时源操作数 区分不同指令 是否影响cpsr 标明寄存器编号 源操作数,若为寄存器则为寄存器编号
为寄存器,1时为立即数)
⑨ldr伪指令保存大于8位的立即数
ldr r0,=0xfff
ldr r0,=0xfff
⑩操作协处理器C15
mrc p15,0,r0,c0,c0,0 @从协处理器寄存器读到通用寄存,读取型号
mcr ......@从通用寄存器写入协处理器寄存器
mrc p15,0,r0,c0,c0,0 @从协处理器寄存器读到通用寄存,读取型号
mcr ......@从通用寄存器写入协处理器寄存器