EFlags as a whole is a single 32-bit register buried inside the CPU.
OF: overflow flag 溢出标记,当一个有符号数整数太大溢出时,这位标记为1。通常当作进位标记。
DF: direction flag 这一位是你告诉CPU应该怎么做的一个标记。当设置这一位时,string instruction proceed from high memory towards low memory. 反之则相反。
IF: interupt enable flag 是否允许中断的标记,CPU保留使用。
TF: trap flag 是否允许单步调试。
SF: sign flag 是否为负数。
ZF: zero flag 如果指令中的一个操作数变为0,就设置这一位。You’ll be using this one a lot for conditional jumps.
PF: Parity flag 如果一个数中1的个数为偶数,则设置这一位。
CF: carry flag 仅为标记,用于unsigned arithmatic。
对于ZF标记位:
一般的对数据进行运算的指令通常都会影响ZF位,比如AND, OR, XOR, INC, DEC以及所有的代数运算指令。
一般仅仅对数据进行转移的指令不会影响ZF位,比如MOV, XCHG, PUSH, POP等。
有一个比较特殊,就是NOT,它虽然对数据进行操作,但是什么标记位都不影响。