FLAGS标志寄存器由一组状态标志、一个控制标志以、一组系统标志以及一部分保留未使用的位所组成。其状态标志用于表示逻辑或算术运算的结果,系统标志提供给操作系统使用。
在16位汇编中,我们可以使用16位FLAGS
标志寄存器,即上图中的低16位。32位汇编中使用32位EFLAGS
寄存器,即上图中展示的32位内容。64位汇编使用64位的RFLAGS
寄存器,其低32位即EFLAGS
,高32位保留暂未使用。
通过LAHF
、SAHF
、PUSHF
、PUSHFD
、POPF
以及POPFD
指令,可以通过栈或EAX
寄存器获得标志值,并可以使用位操作指令(如BT
、BTS
、BTC
、BTR
)等指令测试指定状态。
状态标志
状态标志用于指示算术运算(例如使用ADD
、SUB
、MUL
、DIV
等指令)后的结果,它们包括包括有以下几个标志:
CF
:进位标志(Carry flag)是标志寄存器的第0位,又被称之为CY
,当其被设置时表示运算