11.1 zf標誌
11.2 pf標誌
11.3 sf標誌
sf標誌,就是cpu 對有符號數運算結果的一種記錄,它記錄資料的正負。在我們將資料當作有符號數來運算的時候,可以通過它來得知結果的正負。如果我們將資料當作無符號數來運算,sf的值則沒有意義,雖然相關的指令影響了它的值。
11.4 cf 標誌
11.5 of標誌
注意cf 和 of的區別: cf是對無符號數運算有意義的標誌位。of 是對有符號數運算有意義的標誌位。
11.6 adc指令
11.7 sbb指令
11.8 cmp指令
指令格式:cmp 操作物件1,操作物件2
功能:計算操作物件1-操作物件2 但並不儲存結果,僅僅根據計算結果對標誌暫存器進行設定。
例:cmp ax,ax ,做(ax)-(ax)的運算,結果為0,但並不在ax中儲存,僅影響flag相關各位。指令執行後:zf=1,pf=1,sf=0,cf=0,of=0.
11.9 檢測比較結果的條件轉移指令
轉移指的是它能夠修改ip,而條件指的是它可以根據某種條件,決定是否修改ip.
例:條件轉移指令jcxz ,它可以檢測cx中的數值,如果(cx)=0,就修改ip,否則什麼也不做。
根據cmp指令的比較結果進行轉移的指令分為2種:
常用根據無符號數的比較結果進行轉移的條件轉移指令:
11.10 df標誌和串傳送指令
movsw 功能是將ds:si 指向的記憶體字單元中的字送入es:di中,然後根據標誌暫存器df的值,將si和di遞增2或遞減2.
movsb 和 movsw 與rep 配合使用:
格式:rep movsb
功能:根據cx的值,重複執行後面的串傳送指令。由於每執行1次movsb 指令 si和di 都會遞增或遞減指向後乙個單元或前乙個單元,則 rep movsb 就可以迴圈實現(cx)個字元的傳送。
8086 cpu 提供下面2條指令對df為進行設定:
cld指令: 將標誌暫存器的df位 置0
std指令: 將標誌暫存器的df位 置1
11.11 pushf 和 popf
pushf的功能是將暫存器的值壓棧,而popf是從棧中彈出資料,送入標誌暫存器中。
11.12 標誌暫存器在debug中的表示
在debug中,標誌暫存器是按照有意義的各個標誌位單獨表示的。
在debug中可以看到如下資訊:
組合語言 標誌暫存器
8086cpu的flag暫存器的結構如下所示。1,3行為標誌名,2,4行為位數。ofdf iftf 1514 1312 111098 sfzf afpfcf7 6543 210zf標誌 記錄相關指令執行後,其結果是否為0。pf標誌 記錄相關指令執行後,其結果的所有bit位中1的個數是否為偶數。of標...
組合語言 標誌暫存器
cpu內部的暫存器中,有一種特殊的暫存器 對於不同的處理機,個數和結構都可能不同 具有三種作用 1 用來儲存相關指令的某些執行結果 2 用來為cpu執行相關指令提供行為依據 3 用來控制cpu的相關工作方式。這種特殊的暫存器在8086cpu中,被稱為標誌暫存器 簡稱為flag 8086cpu的標誌暫...
組合語言 標誌暫存器(flag)
標誌暫存器 flag 1用來儲存相關指令的某些資料結果 2用來為cpu執行相關的指令提供行為依據 3用來控制cpu的相關工作方式 flag暫存器是按位起作用,每一位都有專門的含義 8086cpu 0 cf 2 ff 4 af 6 zf 7 sf 8 tf 9 if 10 df 11 of 都具有特殊...