zoukankan      html  css  js  c++  java
  • 《汇编语言(第三版)》标志寄存器

    标志寄存器

    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 中,我们可以看到:

    标志值为1的标记值为0的标记
    of OV NV
    sf NG PL
    zf ZR NZ
    pf PE PO
    cf CY NC
    df DN UP
  • 相关阅读:
    数据结构-向量
    可信执行环境(TEE)介绍 与应用
    ACM
    带哨兵节点和不带哨兵节点的单链表操作的对比
    java:Conllection(List,set,get,map,subList)使用
    java:在Conllection接口中实际上也规定了两个可以将集合变成对象数组的操作
    java:Conllection中的List,ArrayList添加元素,删除元素,输出元素
    java:类集框架conllection接口list,set
    java:投个票程序
    git:Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).
  • 原文地址:https://www.cnblogs.com/zhangjiuding/p/8331307.html
Copyright © 2011-2022 走看看