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中