6.14? BIC位清零指令
1.指令的編碼格式
BIC(Bit Clear)位清零指令,將寄存器Rn的值與第二源操作數(shù)<shifter_operand>的值的反碼按位做“邏輯與”操作,結果保存到Rd中。
指令的編碼格式如圖6.15所示。
圖6.15? BIC指令編碼格式
2.指令的語法格式
BIC{<cond>}{S}? <Rn>,<Rn>,<shifter_operand>
① <cond>
為指令編碼中的條件域。它指示指令在什么條件下執(zhí)行。當<cond>忽略時,指令為無條件執(zhí)行(cond=AL(Alway))。
② <S>
詳見ORR指令。
③ <Rd>
指定目標寄存器。
④ <Rn>
指定第一個源操作數(shù)寄存器。
⑤ <shifter_operand>
使用ARM的通用尋址模式確定第二個源操作數(shù)。它影響指令編碼格式中的I(bit[25])位和shifter_operand(bits[11∶0])位。
3.指令操作的偽代碼
指令操作的偽代碼如下面程序段所示。
If? ConditionPassed{cond}? then
???? Rd=Rn AND NOT shifter_operand
???? If? S==1? and? Rd==r15? then
????????? CPSR=SPSR
???? Else? if? S==1? then
????????? N flag=Rd[31]
????????? Z flag=if? Rd==0? then? 1? else? 0
????????? C flag=shifter_Carry_out
????????? V flag=unaffected
4.指令舉例
【例6.14】BIC指令舉例。
(1)BIC指令真值表如表6.4所示。
表6.4???? BIC指令真值表
Op_1 |
Op_2 |
結??? 果 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
(2)清除R0中的位0、1和3。保持其余的不變。
BIC???? R0, R0, #0x1011;
(3)將R3的反碼和R2邏輯與,結果保存到R1中。
BIC??? R1,R2,R3;