标志寄存器

反映处理器现行状态的16位寄存器

标志寄存器

标志寄存器,又称程序状态字(Program Status Word,简记PSW)[0],也称程序状态寄存器[1]。标志寄存器是一个16位的寄存器,它的位控制各种指令的执行,并反映处理器的现行状态[2]。标志寄存器共设有9个标志位,用以反映算术逻辑运算结果的某些特征。不同的指令对标志的影响是不同的;反之,不同的标志也影响着指令执行的结果。其中CF、PF、AF、ZF、SF和OF6个是状态标志,IF、DF、TF3个是控制标志,其他7位为无用位[3]。

标志寄存器,又称程序状态字(Program Status Word,简记PSW)[1],也称程序状态寄存器[2]。标志寄存器是一个16位的寄存器,它的位控制各种指令的执行,并反映处理器的现行状态[3]

标志寄存器共设有9个标志位,用以反映算术逻辑运算结果的某些特征。不同的指令对标志的影响是不同的;反之,不同的标志也影响着指令执行的结果。其中CF、PF、AF、ZF、SF和OF6个是状态标志,IF、DF、TF3个是控制标志,其他7位为无用位[4]

符号含义

一览:

标志位(外语缩写)标志位名称及外语全称=1=0CF进位标志/Carry FlagCY/Carry/进位NC/No Carry/无进位PF奇偶标志/Parity FlagPE/Parity Even/偶PO/Parity Odd/奇AF辅助进位标志/Auxiliary Carry FlagAC/Auxiliary Carry/进位NA/No Auxiliary Carry/无进位ZF零标志/Zero FlagZR/Zero/等于零NZ/Not Zero/不等于零SF符号标志/Sign FlagNG/Negative/负PL/Positive/非负TF跟踪标志/Trace Flag--IF中断标志/Interrupt FlagEI/Enable Interrupt/允许DI/Disable Interrupt/禁止DF方向标志/Direction FlagDN/Down/减少UP/增加OF溢出标志/Overflow FlagOV/Overflow/溢出NV/Not Overflow/未溢出

标志位置

条件标志:

各标志在标志寄存器中的位置
各标志在标志寄存器中的位置

• 进位标志:用于反映运算是否产生进位或借位。如果运算结果的最高位产生一个进位或借位,则CF置1,否则置0。运算结果的最高位包括字操作的第15位和字节操作的第7位。移位指令也会将操作数的最高位或最低位移入CF。

• 奇偶标志:用于反映运算结果低8位中“1”的个数。“1”的个数为偶数,则PF置1,否则置0。

• 辅助进位标志:算数操作结果的第三位(从0开始计数)如果产生了进位或者借位则将其置为1,否则置为0,常在BCD(binary-codedecimal)算术运算中被使用。

• 零标志:用于判断结果是否为0。运算结果0,ZF置1,否则置0。

• 符号标志:用于反映运算结果的符号,运算结果为负,SF置1,否则置0。因为有符号数采用补码的形式表示,所以SF与运算结果的最高位相同。

• 溢出标志:反映有符号数加减运算是否溢出。如果运算结果超过了8位或者16位有符号数的表示范围,则OF置1,否则置0。

控制标志:

• 跟踪标志:当TF被设置为1时,CPU进入单步模式,所谓单步模式就是CPU在每执行一步指令后都产生一个单步中断。主要用于程序的调试。8086/8088中没有专门用来置位和清零TF的命令,需要用其他办法。

• 中断标志:决定CPU是否响应外部可屏蔽中断请求。IF为1时,CPU允许响应外部的可屏蔽中断请求。

• 方向标志:决定串操作指令执行时有关指针寄存器调整方向。当DF为1时,串操作指令按递减方式改变有关存储器指针值,每次操作后使SI、DI递减。

参考资料 4

  1. 参考 1
  2. 参考 2
  3. 参考 3
  4. 参考 4
广告位:底部(ad-bottom)—— 请到中台「公共区块」编辑此内容