ARM汇编指令之逻辑指令:and & orr & eor & bic
* and
逻辑与操作指令,将operand2的值与寄存器Rn的值按位逻辑与操作,结果保存到Rd中。
指令格式:
and{cond}{S} Rd,Rn,operand2
eg:
ands r0,r0,#0x01 ; r0=r0&0x01 取出最低位数据
and r2,r1,r3 ; r2=r1&r3
* orr
逻辑或操作指令,将operand2的值与寄存器Rn的值按位逻辑或操作,结果保存到Rd中。
指令格式:
orr{cond}{S} Rd,Rn,operand2
eg:
orr r0,r0,#0x0f ; r0=r0 | 0x0f 将r0中数值低四位置1
mov r1,r2,lsr #4
orr r3,r1,r3,lsl #8 ; 使用orr 指令将r2的高8位数据移入到r3的低8位中
* eor
逻辑异或操作指令,将operand2的值与寄存器Rn的值按位异或操作,结果保存到Rd中。
指令格式:
eor{cond}{S} Rd,Rn,operand2
eg:
eor r1,r1,#0x0f ; 将r1的低四位取反
eor r2,r1,r0 ; r2=r1^r0
eors r0,r5,#0x01 ; r0=r5^0x01
* bic
位清除指令,将寄存器Rn的值与operand2 的值的反码按位作逻辑与操作,结果存放在Rd中。(或者你可以理解成对应operand2操作数中位为1的 Rn寄存器相应的位置0,其它位不变)。
指令格式:
bic{cond}{S} Rd,Rn,operand2
eg:
bic r1,r1,#0x0f ; 将r1的低四位清零,其它位不变。
bic r1,r2,r3 ; 将r3的值的反码与r2相逻辑与,结果保存到r1中