各标志在标志寄存器中的位置
一、运算结果标志位
1.进位标志位CF
进位标志CF主要用来反映运算是否产生进位或借位。
运算结果的最高位产生了一个进位或借位,那么,CF=1,否则CF=0。
2.零标志ZF
零标志ZF用来反映运算结果是否为0。
运算结果为0,那么,ZF=1,否则ZF=0。
3.符号标志SF
符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。
运算结果为正数时,SF=0,否则SF=1。
4.溢出标志OF
溢出标志OF用于反映有符号数加减运算所得结果是否溢出。
如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF=1,否则,OF=0。
5.奇偶标志PF
奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。
如果“1”的个数为偶数,则PF=1,否则PF=0。
6.辅助进位标志AF
在字操作时发生低字节向高字节进位或借位时 或者 在字节操作时发生低4位向高4位进位或借位时,AF=1,否则AF=0。
二、状态控制标志位
1.方向标志DF
方向标志DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。
2.追踪标志TF
当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试。
3.中断允许标志IF
中断允许标志IF是用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。
当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求。
当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
三、32位标志寄存器增加的标志位
1.重启动标志RF
重启动标志RF用来控制是否接受调试故障。
RF=0时,表示“接受”调试故障,否则拒绝之。在成功执行完一条指令后,处理机把RF置为0,当接受到一个非调试故障时,处理机就把它置为1。
2.嵌套任务标志NT
嵌套任务标志NT用来控制中断返回指令IRET的执行。
当NT=0,用堆栈中保存的值恢复EFLAGS、CS和EIP,执行常规的中断返回操作;当NT=1,通过任务转换实现中断返回。
3.I/O特权标志IOPL
I/O特权标志用两位二进制位来表示,也称为I/O特权级字段。该字段指定了要求执行I/O指令的特权级。
如果当前的特权级别在数值上小于等于IOPL的值,那么,该I/O指令可执行,否则将发生一个保护异常。
4.虚拟8086方式标志VM
如果该标志的值为1,则表示处理机处于虚拟的8086方式下的工作状态,否则,处理机处于一般保护方式下的工作状态。