标志位寄存器详解

标志寄存器介绍


 

标志寄存器又称程序状态字(外语缩写:PSW、外语全称:Program Status Word)。
这是一个16位的存放条件标志、控制标志寄存器,主要用于反映处理器的状态和ALU运算结果的某些特征及控制指令的执行。
这类寄存器一般有三个作用:
  • 存储相关指令的某些执行结果
  • 用来为CPU执行相关指令提供行为依据
  • 用来控制CPU的相关工作方式

不同位数标志寄存器模型


 

16位标志寄存器(FLAGS)结构如下:

32位标志寄存器(EFLAGS)结构如下:

 各个状态标志简介


 

CF

当进行加(减)法运算时,若最高位向前有进(借)位,则CF=1,否则CF=0。
应当注意的是,减法的CF被规定为小数减大数(无符号数)就置为1,所以不应当考虑减法最终是否转化为补码加法的问题。

PF

当运算结果中低8位的“1”的个数为偶数时PF=1,为奇数时,PF=0。

AF

在加(减)法操作中,bit3向bit4有进位(借位)发生时,AF=1,否则AF=0。DAA和DAS指令测试这个标志位,以便在BCD加法或减法之后调整AL中的值。
1字节为8bit 对应为 bit7|bit6|bit5|bit4 bit3|bit2|bit1|bit0 前四个为高4位,后四个为低4位
简单来说,AF就是用来判断 中间进位没有。即8位二进制操作数 第四位有无进位给第五位

ZF

当运算结果为零时ZF=1,否则ZF=0。

SF

当运算结果的最高位为1时SF=1,否则SF=0。

TF

当追踪标志TF被置为1时,CPU进入单步执行方式。

IF

CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:
当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求
当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求
CPU的指令系统中也有专门的指令来改变标志位IF的值

DF

方向标志DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。在微机的指令系统中,还提供了专门的指令来改变标志位DF的值。

OF

当算术运算结果超出了带符号数的范围,即溢出时,OF=1,否则OF=0.

IOPL

I/O特权标志用两位二进制位来表示,也称为I/O特权级字段。该字段指定了要求执行I/O指令的特权级。如果当前的特权级别在数值上小于等于IOPL的值,那么,该I/O指令可执行,否则将发生一个保护异常。

NT

嵌套任务标志NT用来控制中断返回指令IRET的执行。具体规定如下:
当NT=0,用堆栈中保存的值恢复EFLAGS、CS和EIP,执行常规的中断返回操作;
当NT=1,通过任务转换实现中断返回。

RF

恢复标志RF用来控制是否接受调试故障。规定:RF=0时,表示“接受”调试故障,否则拒绝之。在成功执行完一条指令后,处理机把RF置为0,当接受到一个非调试故障时,处理机就把它置为1。

VM

如果该标志的值为1,则表示处理机处于虚拟的8086方式下的工作状态,否则,处理机处于一般保护方式下的工作状态

AC

该标志以及在CR0寄存器中的AM位置1时将允许内存引用的对齐检查,以上两个标志中至少有一个被清零则禁用对齐检查。

VIF

该标志是IF标志的虚拟镜像(Virtual image),与VIP标志结合起来使用。使用这个标志以及VIP标志,并设置CR4控制寄存器中的VME标志就可以允许虚拟模式扩展(virtual mode extensions)

VIP

该位置1以指示一个中断正在被挂起,当没有中断挂起时该位清零。【Software sets and clears this flag; the processor only reads it.】与VIF标志结合使用

ID

程序能够设置或清除这个标志指示了处理器对CPUID指令的支持。

参考链接


 

 
 
posted @ 2021-01-30 10:10  eur1ka  阅读(2992)  评论(0)    收藏  举报