标志寄存器:CF、PF、AF、ZF、SF、TF、DF、OF

注:下面说到的标志寄存器都是缩写,C就是CF,其他也一样

标志寄存器:C、P、A、Z、S、T、D、O的内容只会是0或1,0表示假,1表示真
在这里插入图片描述

  • O:溢出标志
    一个寄存器如果存放的值超过所能表示的范围,就称为溢出,O溢出时被置为1,否则,O的值被清为0。
    比如说EAX存放的最大值是11111111…(32个)转成16进制是7FFFFFFF,如果再加一就会溢出,我们用OD,修改当前的EAX值为7FFFFFFF,在执行add eax,1就会溢出,观察O标志位。
    在这里插入图片描述
    执行,O标志位为1了,表示发生了溢出
    在这里插入图片描述
  • P:奇偶标志位,偶数为1,奇数为0,
    一条指令的结果转为二进制,偶数个1,P=1,奇数个1,P=0.
    当前EAX的值为0,0个1,所以P=1
    在这里插入图片描述
    我们让eax加1,十六进制的1转为二进制,1的个数为奇数,所以P=0
    在这里插入图片描述
  • Z:0标志,如果一条语句的计算结果是0,Z=1,不是0,Z=0
    EAX修改成-1,再加1
    在这里插入图片描述
    我们可以看到,结果为0,Z=1
    在这里插入图片描述
  • S:符号标志位,如过指令运算结果是负数,S=1,反之,S=0
    在这里插入图片描述
    我们看到现在的EAX是-8,我们让EAX加1,结果是-7,S=1
    在这里插入图片描述
  • C:进位标志位,无符号运算的结果超过寄存器存放的最大值,C=1,没有超过,C=0
    在这里插入图片描述
    设置EAX为FFFFFFFF,此时为EAX存放的最大值,再让EAX加一,C=1
    在这里插入图片描述

A、T、D基本用不到,A是辅助进位标志位,T是定时器溢出标志,D是方向标志位,就不详细介绍了

发布了203 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41683305/article/details/105398892
今日推荐