彙編語言--微機CPU的指令系統(五)(位操做指令)

(6) 位操做指令測試

1、位掃描指令(Bit Scan Instruction)blog

指令的格式:BSF/BSR Reg, Reg/Mem ;80386+ip

受影響的標誌位:ZFget

位掃描指令是在第二個操做數中找第一個「1」的位置。若是找到,則該「1」的位置保存在第一操做數中,並置標誌位ZF爲1,不然,置標誌位ZF爲0。it

根據位掃描的方向不一樣,指令分二種:正向掃描指令和逆向掃描指令。io

a) 正向掃描指令BSF(Bit Scan Forward)從右向左掃描,即:從低位向高位掃描;cli

b) 逆向掃描指令BSR(Bit Scan Reverse)從左向右掃描,即:從高位向低位掃描。im

clip_image002

例如:img

MOV AX, 1234Hdi

BSF CX, AX ;指令執行後,(CX)=2

BSR CX, AX ;指令執行後,(CX)=12

2、位檢測指令(Bit Test Instruction)

指令的格式:BT/BTC/BTR/BTS Reg/Mem, Reg/Imm ;80386+

受影響的標誌位:CF

位檢測指令是把第一個操做數中某一位的值傳送給標誌位CF,具體的哪一位由指令的第二操做數來肯定。(注意:第二操做數從左至右從低位向高位從0位開始)

根據指令中對具體位的處理不一樣,又分如下幾種指令:

BT:把指定的位傳送給CF;

BTC:把指定的位傳送給CF後,還使該位變反;

BTR:把指定的位傳送給CF後,還使該位變爲0;

BTS:把指定的位傳送給CF後,還使該位變爲1;

clip_image004

例如:假設(AX)=1234H,分別執行下面指令。

BT AX, 2 ;指令執行後,CF=1,(AX)=1234h

BTC AX, 6 ;指令執行後,CF=0,(AX)=1274h

BTR AX, 10 ;指令執行後,CF=0,(AX)=1234h

BTS AX, 14 ;指令執行後,CF=0,(AX)=5234h

3、檢測位指令TEST(Test Bits Instruction)

檢測位指令是把二個操做數進行邏輯「與」操做,並根據運算結果設置相應的標誌位,但並不保存該運算結果,因此,不會改變指令中的操做數。在該指令後,一般用JE、JNE、JZ和JNZ等條件轉移指令。

指令的格式:TEST Reg/Mem, Reg/Mem/Imm

受影響的標誌位:CF(0)、OF(0)、PF、SF和ZF(AF無定義)

例如:

TEST AX, 1 ;測試AX的第0位

TEST CL, 10101B ;測試CL的第0、二、4位

相關文章
相關標籤/搜索