《汇编语言(第三版)》标志寄存器
標志寄存器
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 中的表示
在寄存器中,標志局存起是按有意義的各個標志位單獨表示的。在 Debug 中,我們可以看到:
| of | OV | NV |
| sf | NG | PL |
| zf | ZR | NZ |
| pf | PE | PO |
| cf | CY | NC |
| df | DN | UP |
總結
以上是生活随笔為你收集整理的《汇编语言(第三版)》标志寄存器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王爽《汇编语言(第三版)》检测点11.1
- 下一篇: DF标志和串传送指令