在执行指令时,芯片需要设置或清除一组标志状态来记录操作的结果。这些标志和一些其他的控制标志保存在一个特殊的状态寄存器中。每个标志在寄存器中都使用一个位来存储。
指令用来测试多个位的值,设置或者清除其中某些位的数值,以及将整个数据集压入堆栈或者弹出堆栈。
-
进位标志(Carry Flag)
如果最后一个操作指令导致结果的第7位向上溢出或者第0位向下溢出,则设置进位标志。此条件是在算术、比较和逻辑转换期间设置的。它可以使用set Carry Flag
(SEC)指令显式设置,并使用Clear Carry Flag
(CLC)清除。 -
零标志(Zero Flag)
如果最后一个操作的结果为零,则设置零标志。 -
禁止中断(Interrupt Disable)
如果程序执行了set interrupt disable
(SEI)指令,则设置中断禁用标志。当这个标志被设置时,处理器将不会响应来自设备的中断,直到它被一个Clear Interrupt Disable
(CLI)指令清除。 -
十进制模式(Decimal Mode)
当设置了十进制模式标志时,处理器将在加减过程中遵守二进制编码十进制(BCD)算术规则。我们可以使用set Decimal flag
(SED)显式设置该标志,并使用clear Decimal flag
(CLD)清除该标志。 -
中断命令(Break Command)
break命令位是在BRK指令被执行并产生一个中断来处理它时设置的。 -
溢出标志(Overflow Flag)
如果结果产生了无效的2的补码结果,则在算术操作期间设置溢出标志(例如,与正数相加,结果为负数:64 + 64 => -128)。它是通过查看位6和位7之间的进位以及位7和进位标志之间的进位来确定的。 -
负位标志(Negative Flag)
如果最后一个操作的结果7位被设为1,则设置负标志。
网友评论