【第十一章】标志寄存器

CPU的内部寄存器中,有一种特殊寄存器,叫做标志寄存器(flag)。有下面三种作用:

  1. 用来存储相关指令的某些执行结果
  2. 用来为CPU执行相关指令提供行为依据
  3. 用来控制CPU相关的工作方式

Flag和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。而flag寄存器是按位起作用的。也就是说,它的每一位都有专门的意义,记录特定的信息

1.PNG

这一章中我们学习标志寄存器中的CF、PF、ZF、SF、OF、DF标志位

11.1 ZF标志

flag的第六位是ZF(Zero Flag),零标志位。它记录相关指令执行后,其结果是否为0:

例子:

mov ax,2
sub ax,1

执行后,结果不为0,则ZF=0。对于ZF的值,我们可以这么来看,ZF标记相关指令的计算结果是否为0 。如果为0,则ZF要记录下“是0”这样的肯定信息。在计算机中1表示逻辑真,表示肯定,所以当结果为0时ZF=1,表示“结果是0”。

如果结果不为0,则ZF要记录下“不是0”这样的否定信息。在计算机中0表示逻辑假,表示否定,所以当结果不为0的时候ZF=0,表示“结果不是0”

注意:在8086CPU指令集中,有的指令的执行是影响标志寄存器的,如:add、sub、mul、div、inc、or、and等。它们大多是运算指令(进行逻辑或算术运算)

有的指令的执行对标志寄存器没有硬件,比如mov、push、pop等,它们大都是传送指令