汇编-11.0-标志寄存器

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是对有符号运算有意义的标志位。

猜你喜欢

转载自www.cnblogs.com/xigongxiaosha/p/9480533.html