《組合語言(第三版)》標誌暫存器

2021-08-14 21:50:28 字數 1860 閱讀 3075

標誌暫存器

8086cpu中的flag暫存器包括:

cf、pf、zf、sf、of、df。

傳送指令不影響標誌暫存器

zf標誌暫存器

zf標誌暫存器位於flag中的第6為,表示零標誌位。(至於flag是什麼,暫時不用管)

zf暫存器的作用

判斷指令執行後結果是否為0。

舉例mov ax,1

sub ax,1

該指令執行後結果為0,zf=1

pf標誌暫存器

pf標誌暫存器位於flag中的第2位,表示奇偶標誌位。

pf暫存器的作用

判斷指令執行完之後結果中bit位為1的個數是否為偶數。如果1的個數為偶數,pf=1;如果為奇數,pf=0。

舉例mov al,1

add al,10

執行後結果為00001011b,其中有3個1,pf=0。

sf標誌暫存器

sf標誌暫存器位於flag中的第7位,表示符號標誌位。

sf暫存器的作用

判斷指令執行之後結果是否為負。如果為負,sf=1。

sf暫存器的特點

如果我們進行無符號運算,sf暫存器無意義,如果進行有符號運算,sf記錄正負。

舉例00000001b 可以看做無符號數1,有符號數+1。

10000001b 可以看做無符號數129,有符號數-127。

無符號加法:

mov al,10000001b

add al,1

結果 al = 10000010b,表示129+1 = 130。

有符號加法:

mov al,10000001b

add al,1

結果 al = 10000010b, sf=1,表示-127+1 = -126。

cf標誌暫存器

cf標誌暫存器位於flag中的第0位,表示僅為標誌位。

cf暫存器的作用

在無符號數運算的時候,它錄入了運算結果的最高有效位向更高位進製的進製值,或從更高位的借位值。

cf暫存器的特點

僅在無符號運算時起作用。

舉例進製:

mov al,98h

add al,al

執行後al=30h,cf=1,cf記錄了從最高有效位向更高位的進製值。

add al,al

執行後al=60h,cf=0,cf記錄了從最高有效位向更高位的進製值。

借位:mov al,97h

sub al,98h

執行後al=ffh,cf=1,cf記錄了向更高位的借位值。

sub al,al

執行後al=0,cf=0,cf記錄了向更高位的借位值。

of標誌暫存器

of標誌暫存器位於flag中的第11位,表示溢位標誌位。

of暫存器的作用

判斷計算後的結果是否溢位。溢位,of=1;不溢位,of=0。

of暫存器的特點

of僅在有符號數運算時起作用。

如果因為溢位導致了實際結果為負,那麼邏輯上真正的結果必定為正。

如果因為溢位導致了實際結果為正,那麼邏輯上真正的結果必定為負。

舉例mov al,0f0h

add al,88h

指令執行後發生了溢位of=1。

mov al,0f0h

add 78h

指令執行後不發生溢位of=0。

在暫存器中,標誌局存起是按有意義的各個標誌位單獨表示的。在 debug 中,我們可以看到:

標誌值為1的標記

值為0的標記

ofov

nvsf

ngpl

zfzr

nzpf

pepo

cfcy

ncdf

dnup

王爽《組合語言》第三版 第十一章 標誌暫存器

引言 8086cpu的標誌暫存器有16位,其中儲存的資訊通常被稱為程式狀態字 psw 我們己經使用過8086cpu的ax bx cx dx si di bp sp ip cs ss ds es等13個暫存器了。本章中的標誌暫存器 以下簡稱為flag 是我們要學習的最後乙個暫存器。flag暫存器是按位...

組合語言第三版(王爽著) 第11章 標誌暫存器

標誌暫存器的作用 用來儲存相關指令的某些執行結果 用來為cpu執行相關指令提供行為依據 用來控制cpu的相關工作方式 其中儲存的資訊通暢被稱為程式狀態字 psw 簡稱flag flag 和其他暫存器不一樣,其他暫存器是用來存放資料的,都是整個暫存器具有乙個含義。而flag暫存器是按位起作用的。也就是...

組合語言 標誌暫存器

8086cpu的flag暫存器的結構如下所示。1,3行為標誌名,2,4行為位數。ofdf iftf 1514 1312 111098 sfzf afpfcf7 6543 210zf標誌 記錄相關指令執行後,其結果是否為0。pf標誌 記錄相關指令執行後,其結果的所有bit位中1的個數是否為偶數。of標...