【正确答案】在8086CPu中,FR寄存器共有9个标志位,即6个状态标志位(CF、PF、AF、ZF、SF、OF),3个控制标志位(TF、DF、IF)。
CF(Carry FIag)进位标志:当执行一个加法或减法运算使最高位(即D15位或D7位)产生进位或借位时,则CF为1;否则为0。在进行多字节数的加减运算时,要使用到该标志位;在比较无符号数大小时,也用到该标志位。此外,循环指令也会影响它。
PF(Parity Flag)奇偶标志:当指令执行结果的低8位中含有偶数个1时,则PF为1;否则为0。利用PF可进行奇偶校验检查,或产生奇偶校验位,在串行通信中也用到PF位。
AF(Auxiliary Carry Flag)辅助进位标志:当执行一个加法或减法运算使结果的低字节的低4位向高4位有进位或借位时,则AF为1;否则为0。
ZF(Zero F1ag)零标志位:若当前的运算结果为零,则ZF为1;否则为0。
SF(Sign Flag)符号标志:它和运算结果的最高位(根据D15位或D7位判断)相同。当数据用补码表示时,负数的最高位为1,正数的最高位为0。
OF(Overflow F1ag)溢出标志:它用于反映有符号数加减运算是否引起溢出。如运算结果超过了8位或16位有符号数的表示范围,即在字节运算时大于+127或小于-128,在字运算时大于+32767或小于-32768,称为溢出。当补码运算有溢出时,OF为1;否则为0。可以采用简易的办法来求OF的取值:即如果操作数是字节运算,用C6和C7位的值进行异或运算;如果操作数是字运算,用C14和C15位的值进行异或运算(Ci表示进行加减运算时第i位向第i+1位的进位或借位)。如C6=1,C7=0,则OF=1;C15=1,C14=1,则OF=0。
DF(Direction Flag)方向标志:它用来控制数据串操作指令的步进方向。若用STD指令将DF置1,则串操作过程中地址会自动递减;若用CLD指令将DF清0,则串操作过程中地址会自动递增。
IF(Interrupt Enable Flag)中断允许标志:它是控制可屏蔽中断的标志。若用STI指令将IF置1,表示允许CPU接收外部从INTR引线上发来的可屏蔽中断请求信号;若用CLI指令将IF清0,则禁止CPU接收可屏蔽中断请求信号。IF的状态不影响非屏蔽中断(NMI)请求,也不影响CPU响应内部的中断请求。
TF(Trap Flag)跟踪(陷阱)标志:它是为凋试程序方便而设置的。若将TF置1,8086/8088CPU处于单步工作状态方式;否则,将正常执行程序。8086/8088CPU没有专门设置或清除TF标志的指令,要通过其他方法设置或清空TF。
【答案解析】