《汇编语言(第三版)》标志寄存器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《汇编语言(第三版)》标志寄存器相关的知识,希望对你有一定的参考价值。

标志寄存器

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。

以上是关于《汇编语言(第三版)》标志寄存器的主要内容,如果未能解决你的问题,请参考以下文章

《汇编语言(第三版)》cmp指令

8086汇编语言学习 8086标志寄存器

学 Win32 汇编[20]: 洞察标志寄存器

汇编语言——标志寄存器

汇编11:标志寄存器

汇编语言 (王爽 第三版)第二章:寄存器