一.移位指令
1.LSL 指令
逻辑左移指令,实现将寄存器进行左移操作
lsl r1, r0, #2 //r1 = r0 * 2^2
mov r1, r0, lsl, #2 //和上一个汇编指令效果一样
add r1, r0, lsl, #2 //r1 = r1 + r0 * 2^2
2.LSR 指令
逻辑右移指令,实现将寄存器进行右移操作
lsr r1, r0, #2 //r1 = r0 / 2^2
mov r1, r0, lsr, #2 //和上一个汇编指令效果一样
add r1, r0, lsr, #2 //r1 = r1 + r0 / 2^2
二.位运算
1.AND (逻辑与指令)
AND:将操作数1按位与操作数2的结果存放在目标寄存器
MOV R1, 0x0F ; //将寄存器R1设置为0x0F,二进制为 00001111
MOV R2, 0x03 ; //将寄存器R2设置为0x03,二进制为 00000011
AND R3, R1, R2 ; //R3 = R1 & R2
//r3结果为0x03,二进制为 00000011
2.ORR (逻辑与指令)
将操作数1按位或操作数2的结果存放在目标寄存器
MOV R1, 0x0F ; //将寄存器R1设置为0x0F,二进制为 00001111
MOV R2, 0x03 ; //将寄存器R2设置为0x03,二进制为 00000011
ORR R3, R1, R2 ; //R3 = R1 | R2
//r3结果为0x0f,二进制为 00001111
3.EOR(逻辑异或指令)
EOR:将操作数1按位异或操作数2的结果存放在目标寄存器
MOV R1, 0x0F ; //将寄存器R1设置为0x0F,二进制为 00001111
MOV R2, 0x03 ; //将寄存器R2设置为0x03,二进制为 00000011
EOR R3, R1, R2 ; //R3 = R1 ^ R2
//r3结果为0x0c,二进制为 00001100
4.BIC(位清除指令 )
BIC:将操作数1按位与操作数2取反的结果存放在目标寄存器(目标寄存器=操作数1 & ~操作数2)
MOV R1, 0x0F ; //将寄存器R1设置为0x0F,二进制为 00001111
MOV R2, 0x03 ; //将寄存器R2设置为0x03,二进制为 00000011
BIC R3, R1, R2 ; //R3 = R1 & ~R2
//r3结果为0x0c,二进制为 00001100