EFlags

EFlags as a whole is a single 32-bit register buried inside the CPU.

EFlags_1

EFlags_2

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,它虽然对数据进行操作,但是什么标记位都不影响。

原文地址:https://www.cnblogs.com/wangshuo/p/1985340.html