ARM逻辑运算指令

1、AND(按位与)同时为真(1)结果为真,其它为假。

MOV R0,#0x02            ;R0=0X2
AND R0,R0,#0x01            ;R0=R0&0x01=0000 0010 & 0000 0001= 0
MOV R1,#0x07            ;R1=0X7
MOV R3,#0x05            ;R3=0X5
AND R2,R1,R3            ;R2=R1&R3= 0000 0111 & 0000 0101 = 0000 0101=5

2、ORR(按位或)有一个为真(1)结果为真,都为假(0)结果才为假。

MOV R0,#0x01           ;R0=0X1
ORR  R0,R0,#0x0F       ;R0=R0|0XF=0000 0001 | 0000 1111=0000 1111=0XF  

3、EOR(按位异或)两个值不同的时候结果才为真,两个值相同结果为假。
异或的应用:用于取反操作
   1   1  0
   1   0  0
   0   1  0
   MOV R1,#0X66          ;R1=0X66
   MOV R0,#0X88          ;R0=0X88
   EOR R1,R1,#0x0F        ;R1=R1^0X0F=0110 0110 ^ 0000 1111= 0110 1001 =0X69 
   EOR R2,R1,R0          ;R2=R1^R0=0x69 ^ 0x88 =0110 1001 ^ 1000 1000 = 1110 0001=0xe1

4、BIC(位清零指令):应用对寄存器的一些位进行清零操作。

MOV R1,#0X66  ; R1=0X66
BIC R1,R1,#0x0F    ;R1=R1 AND !0X0F= 0110 0110 AND 1111 0000=0110 0000 =0X60           
!(0XF)=0XFFFFFFF0

猜你喜欢

转载自blog.csdn.net/xiezhi123456/article/details/82833268