1.标志寄存器
(1).用来存储相关指令的某些执行结果;
(2).用来为CPU执行相关指令提供的行为依据;
(3).用来控制CPU的相关工作方式。
flag寄存器是按位起作用的,每一位都有专门的含义,记录特定的信息。
flag的1、3、5、12、13、14、15位在8086CPU中没有使用,不具有任何意义,而0、2、4、6、8、9、10、11位都具有特殊的含义。
2.ZF标志
flag的第六位是ZF标志位,零标志位。它记录相关指令执行后,其结果是否为0.如果为0,
那么zf=1,如果不为0,那么zf=0.
3.PF标志
flag的第二位是PF,奇偶标志位。它记录相关指令执行后,其结果的所有bit位中1的个数是否为偶数。如果1的个数为偶数,pf=1,如果为奇数,
那么pf=0.
4.SF标志
flag额第七位是SF,符号标志位。它记录相关指令执行后,其结果是否为负,如果为负,sf=1;如果不是,则sf=0.
SF标志,就是CPU对有符号数运算结果的一种记录,它记录数据的正负。在我们将数据当作有符号来运算的时候,
可以通过它来的知结果的正负。如果我们将数据当作无符号值则没有意义,虽然相关的指令影响了它的值。
5.CF标志
flag的第0位是CF,进位标志位。一般情况下,在进行无符号运算时,它记录了运算结果的最高有效位向更高的进位值,
或从更高位的借位值。
对于位数为N的无符号来说,其对应的二进制的最高位,即第N-1位,就是它的最高有效位,而假想存在的第N位,
就是相对于最高有效位的更高位。
6.OF标志
由于在进行有符号运算时,可能发生溢出而造成结果的错误。则CPU需要对指令执行后是否产生溢出进行记录。
flag的第11位时OF位,溢出标志位。一般情况下,OF记录了有符号数运算的结果是否发生了溢出。如果发生溢出,OF=1;
如果没有,OF=0。
CF和OF的区别:CF是对无符号运算有意义的标志位,而OF是对有符号运算有意义的标志位。