1. 程式人生 > >1.15.ARM彙編指令3之邏輯指令

1.15.ARM彙編指令3之邏輯指令

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中