組合語言 第11章 標誌暫存器

2021-09-01 15:49:56 字數 1952 閱讀 3342

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 都具有特殊...