标志位寄存器详解 标志寄存器介绍 标志寄存器又称程序状态字(外语缩写: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指令的支持。 参考链接 x86-EFLAGS寄存器详解 x86架构CPF标志寄存器介绍 标志寄存器百度百科
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/85100.html