ARM数据处理指令——逻辑运算指令
助记符 | 说明 | 操作 | 条件码位置 |
---|---|---|---|
AND Rd,Rn,operand2 | 逻辑与操作指令 | Rd<-Rn&operand2 | AND{cond} {S} |
ORR Rd,Rn,operand2 | 逻辑或操作指令 | Rd<-Rn|operand2 | ORR{cond} {S} |
EOR Rd,Rn,operand2 | 逻辑异或操作指令 | Rd<-Rn^operand2 | EOR{cond} {S} |
BIC Rd,Rn,operand2 | 位清除指令 | Rd<-(~operand2) | BIC{cond} {S} |
AND
逻辑与操作指令——AND指令将operand2的值与寄存器Rn的值按位逻辑“与”操作,结果保存到Rd中。
指令格式如下:
AND{cond} {S} Rd,Rn,operand2
应用示例:
ANDS R0,R0,#0x01 ;R0=R0&0x01,取出最低位数据
AND R2,R1,R3 ;R2=R1&R3
ORR
逻辑或操作指令——ORR指令将operand2的值与寄存器Rn的值按位做逻辑“或”操作,结果保存到Rd中。
指令格式如下:
ORR{cond} {S} Rd,Rn,operand2
应用示例:
ORR R0,R0,#0x0F ;将R0的低四位置1
MOV R1, R2, LSR #24 ;R1=R2>>24=R2<<8
ORR R3,R1,R3,LSL #8 ;使用ORR指令将R2的高八位:数据移入到R3低8位中R3 = R1 or (R3<<8)
EOR
逻辑异或操作指令——EOR指令将operand2的值与寄存器Rn的值按位作逻辑“异或”操作,结果保存到Rd中。
指令格式如下:
EOR{cond} {S} Rd,Rn,operand2
应用示例:
EOR R1,R1,#0x0F ;将R1的第四位异或
EOR R2,R1,R0 ;R2=R1^R0
EORS R0,R5,0x01 ;将R5和0x01进行逻辑异或,结果保存到R0,并影响标志位
BIC
位清除指令——BIC指令将寄存器Rn的值与operand2的值的反码按位作逻辑"与"操作,结果保存到Rd中。
指令格式如下:
BIC{cond} {S} Rd,Rn,operand2
应用实例:
BIC R1,R1,#0x0F ;将R1的低四位清零,其它位不变
BIC R1,R2,R3 ;将R3的反码和R2相逻辑“与”,结果保存到R1中