Intel 8086/8088CPU设置了一个16位的标志寄存器,用来反映微处理器的当前状态和某些控制,标志寄存器中有9个标志位,分为两大类:状态标志(CF, PF, AF, ZF, SF, OF)和控制标志(TF, IF, DF),状态标志由CPU根据运算结果自动设置,用来反映CPU的执行单元EU执行算术运算或逻辑运算后的结果特征,这些特征常用来影响或者是控制某些后续指令的执行,控制标志由系统程序或者用户程序用指令来设置或者是清除,用来控制CPU的某些操作。
1)、状态标志
(1)进位位CF
进位位CF用来反映运算结果是否产生进位或者是借位。如果运算结果的最高
位(字操作的15位和字节操作的第7位)产生一个进位(减法),则CF置1,否则CF清零,另外CF在循环移位/移位类指令中用来保存从最高位或最低位移出的0或1
(2)奇偶位PF
奇偶位PF用来反映运算结果低八位中“1”的个数,可以为传送数据时可能产生的出错情况提供校验条件,如果运算结果中的低八位中“1”的个数为偶数个时,则置PF为1,否则置0
(3)辅助进位位AF
辅助进位位AF用来反映运算结果低四位产生进位或借位情况,如果运算结果的第3位产生了一个进位或借位,,则AF置1,否则置0,AF只反映运算结果的低八位,与操作数长度无关,主要用于十进制的调整
(4)零值位ZF
零值位ZF用来反映运算结果是否为0, 如果运算结果为0,则ZF置为1, 否则置为0
(5)符号位SF
符号位SF再将运算结果视为带符号数时,用来反映运算结果是正数还是负数,如果运算结果是负数,即一个数的最高位为1则SF置1,否则置0,所以SF与运算结果的最高位相一致
(6)溢出位OF
溢出位OF用来反映运算结果是否超出了补码的表示范围,8位带符号数的补码的表示范围是-128--+127, 16位的带符号数补码表示范围是-32768--+32767,如果运算结果超过了补码的范围,则OF置1,否则置0.
2)控制标志
(1)单步标志位TF
单步标志位TF也叫跟踪标志位,用药用于程序程序的跟踪调试,当TF=1时,CPU进入单步状态。
(2)中断允许位IF
中断允许位IF用于决定CPU是否可以相应外部可屏蔽中断请求,当IF=1时为中断状态,即允许CPU响应外部可屏蔽中断,反则一样
(3)方向位DF
方向位DF决定串操作指令执行时指针寄存器的调整方向方向,当DF=0时,正向处理,从地地址向高地址,即串操作指令自动地使地址寄存器(SI或DI)递增,反之同样
本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/938213,如需转载请自行联系原作者