80x86处理器的标志寄存器

  EFLAGS:存放CPU的两类标志。

  状态标志:反映处理器当前的状态,如有无溢出,有无进位等。

  控制标志:用来控制处理器的工作方式,如是否响应可屏蔽中断等。

  各状态标识的含义如下。

  1、 OF:溢出标志。OF=1表示两个有符号数的运算结果超出了可以表示的范围,结果是错误的;OF=0表示没有溢出,结果正确。进行无符号数运算时也会产生新的OF标志(CPU不知道处理对象是否为有符号数),此时程序员可以不关心OF标志。

  2、DF:方向标志。DF=0时,每次执行字符串指令后,源或目的地址指针用加法自动地修改地址;DF=1时用减法修改地址。它用来控制地址的方向变化。

  3、IF:中断允许标志。IF=1表示允许处理器响应可屏蔽中断请求信号,成为开中断,IF=0表示不允许处理器响应可屏蔽中断请求信号,称为关中断。

  4、SF:符号标志。SF=1表示运算结果的最高位为1。对于有符号数,有溢出标志OF=0时,SF=1表示运算结果为负,SF=0表示运算结果非负(正或零)。OF=1时,由于结果是错误的,所以符号位也和正确值相反。例如,两个负数相加产生溢出,此时SF=0。对于无符号数运算,SF无意义,但是可以看出结果的大小规模。

  5、ZF:零标志。ZF=1表示运算结果为零,减法运算为零意味着两个参加运算的数大小相等;ZF=0,表示运算结果非零。 

  6、AF:辅助进位标志。它是另个BCD数运算时第三位数上的进位,供运算会调整结果用,对其他数的运算没有意义。

  7、PF:奇偶标志。PF=1表示运算结果的低八位中有偶数个1;PF=0表示奇数个1,它可以用来进行奇偶校验。

  8、CF:进位/借位标志。CF=1表示两个无符号数的加法有进位,或者是减法运算有借位,需要对它们的高位进行处理;CF=0表示没有产生进位或借位。同样,进行有符号数运算时也会产生新的CF标志,此时程序员可以不关心CF标志。

  状态标志在每次运算后自动产生,控制标志的值则由指令设置。

  另外,还有一个单步标志TF(或叫陷阱标志),用于程序的调试。TF=1时,每次执行一条指令都会产生一次陷阱,改程序被暂停,TF=0时,不产生陷阱。

  还有2位表示I/0操作特权级别的标志。

你可能感兴趣的:(汇编,eflags,标志寄存器)