組合語言 標誌暫存器(flag)

2021-10-02 15:34:03 字數 1853 閱讀 4923

標誌暫存器(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)都具有特殊含義,其他位沒有使用(造成影響的大多數是運算指令(邏輯/算數))

zf標誌

零標誌位,記錄相關指令執行後,其結果是否為0,如果結果為0,那麼zf=1;不為0,那麼zf=0

pf標誌

奇偶標誌位,記錄相關指令執行後,其結果的所有bit位中的1的個數是否為偶數,如果1的個數是偶數,pf=1,個數為奇數,pf=0

sf標誌(7)

符號標誌位,記錄相關指令執行後,其結果如果是負數sf=1,如果非負數,sf=0

計算中的乙個資料可以當作有符號數處理,也可以看作無符號數處理

00000001 無符號數1 有符號數+1/-1

如果我們把資料當作無符號運算,cf對我們沒有任何意義

cf標誌(0)

進製標誌位,在進行無符號數運算時,他記錄了運算結果的最高有效位向更高位的進製值,或者從更高位的借位值

加法運算(儲存資料溢位的最高有效位 /al=123 al=23 sf=1)

減法運算(借位進行運算)mov al,0 sub al-10 借位sf=1 al=16-10

mov al 98h

add al,al /98h+98h=130h al=30h cf位=1

of標誌(11)

在進行有符號運算的時候,如果結果超過了機器所表示的範圍,稱為溢位

溢位標誌位,of記錄了有符號運算的結果是否發生了溢位,如果溢位 of=1,如果沒有 of=0

adc指令

帶進製加法指令,利用cf上的值,進行進製運算

adc 操作物件1,操作物件2

操作物件1=操作物件1+操作物件2+cf

sbb指令

sbb 帶借位減法指令,利用cf上的值

sbb 操作物件1,操作物件2

操作物件1=操作物件2=操作物件-cf

cmp指令

cmp比較指令,相當於減法指令,只是不儲存結果

cmp指令執行後,對標誌暫存器產生影響,其他相關指令通過識別這些被影響的標誌暫存器得知比較結果

cmp 操作物件1,操作物件2

計算 操作物件1-操作物件2 根據計算結果對標誌暫存器進項設定

檢測比較結果的條件轉移指令

指令 je /等於則轉移 /zf=1 eqyal

jne /不等於則轉移 /zf=0 not equal

jb /低於則轉移 /cf=1 below

jnb /不低於則轉移 /cf=0 not below

ja /高於則轉移 /cf=0或zf=0 above

jna /不高於則轉移 /cf=1或zf=1 not above

df標誌(10)

方向標誌位,在處理串資料指令中 ,控制每次操作後si,di的增減

df=0 每次操作si di 遞增

df=1 每次操作si di 遞減

pushf和popf

pushf 將標誌暫存器的值壓入棧中

popf 從棧中彈出資料,送入標誌暫存器

組合語言 標誌暫存器

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)

8086cpu的標誌暫存器有16位,其中儲存的資訊通常被稱為程式狀態字。其他暫存器時用來存放資料的,整個暫存器具有乙個含義。flag暫存器是按位起作用的,它的每一位都有專門的含義,記錄特定的資訊。8086cpu的flag暫存器的結構 1514 1312 111098 7654 3210 ofdf i...