码迷,mamicode.com
首页 > 其他好文 > 详细

X86标志寄存器EFLAGS详解

时间:2020-12-19 12:50:55      阅读:2      评论:0      收藏:0      [点我收藏+]

标签:自动   记录   cpu   iar   inf   处理   详细   个数   否则   

CPU标志寄存器非常复杂,16位、32位、64位CPU的标志寄存器EFLAGS都不一样,16位太旧了,兼容 在32位寄存器内,我就不讲了,详细讲解一下32位寄存器,64位在32位上扩展,我会边学边更新。

1.X86_32的EFLAGS寄存器

技术图片

  • CF:进位标志CF(Carry Flag),如果运算结果的最高位产生了一个进位或借位,其值为1,否则为0。
  • PF:奇偶标志PF(Parity Flag),运算结果中“1”的个数的奇偶性,偶数个1,PF=1,反之为0。
  • AF:辅助进位标志AF(Auxiliary Carry Flag),这个不太好理解,比如:EAX值为0xNNNNNNNN(红色地方有进位,AF就是1,不管使用的是:EAX、AX、AL)。
  • ZF:零标志ZF(Zero Flag),它记录相关指令执行后,结果是否为0;如果结果为0,zf=1,如果结果不为0,zf=0
  • SF:符号标志SF(Sign Flag),正负标志位,它记录相关指令执行后,结果是否为负,如果结果为负,zf=1,如果结果非负,zf=0。(说明一下:符号位是程序员确定的,如果是无符号数,就算SF位,如果是无符号数,就不管SF位,想让SF=1,就:MOV EAX,0x1然后SUB EAX,0x2)
  • OF:溢出标志OF(Overflow Flag):溢出标志OF用于反映有符号数加减运算所得结果是否溢出。(MOV AL,0x7F, ADD AL,0x1)
    CF与OF的区别:
    进位标志CF表示无符号数运算结果是否超出范围.
    溢出标志OF表示有符号数运算结果是否超出范围.
  • DF:方向标志DF(Direction Flag),控制串指令(MOVS, CMPS, SCAS, LODS以及STOS)。DF=1,ESI,EDI自动递减(从高地址向低地址方向处理字符串),DF=0,ESI,EDI自动递增

X86标志寄存器EFLAGS详解

标签:自动   记录   cpu   iar   inf   处理   详细   个数   否则   

原文地址:https://blog.51cto.com/14207158/2564054

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!