8086CPU的标志寄存器,简称flag寄存器,有16位,按位起作用,每一位都有其含义。
结构如图:
在8086CPU指令集中,
有的指令执行时影响标志寄存器的,比如add,sub,mul,div,inc,or,and 等,它们大都是运输指令(进行逻辑或算术运算);
有的指令执行对标志寄存器没有影响,比如mov,push,pop,它们大都是传输指令。
1.1 ZF标志
ZF为零标志位,其记录相关指令执行后,结果是否为0,如果为0,则zf=1, 否则zf=0.
1.2 PF标志
PF为奇偶标志,其记录相关指令执行后,结果的所有bit位中,1的个数是否为偶数。
如果1的个数为偶数,pf=1;如果为奇数,pf=0;
1.3 SF标志
SF为符号标志位,记录相关指令执行后,其结果是否为负。
如果结果为负,sf=1; 如果非负,sf=0;
计算机中使用补码表示有符号数据,计算机中的一个数据可以看作是有符号数,也可以看作是无符号数。
SF标志,就是CPU对 有符号数 运算结果的一种记录,记录数据的正负。
当我们将数据当作 有符号数 来进行运算的时候,可以通过其得知结果的正负。
当我们将数据当作 无符号数 来运行的时候,SF的值没有意义,虽然相关的指令计算影响了它的值。
也就是说,CPU在执行add等指令的时候,是 必然 会影响到SF标志位的值,至于我们需不需要这种影响,就要看我们如何看待指令所进行的运算了。
1.4 CF标志
CF为进位/借位标志位。