第11章 标志寄存器
CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都有可能不同)具有以下3种作用。
- 用来存储相关指令的某些执行结果;
- 用来为CPU执行相关指令提供行为依据;
- 用来控制CPU的相关工作方式。
这种特殊的寄存器,被称为标志寄存器。
8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字PSW。
关于标志寄存器的各位如图所示,有很多位其实没有意义的。
11.1 ZF标志
flag的第6位是ZF,零标志位(ZERO FLAG)。
其记录结果是否为零。比如
mov ax,1
sub ax,1
sub
指令执行之后,其结果为1,那么此时寄存器中的ZF的执行结果就为1。
补充:在使用一条指令的时候,要注意这条指令的全部功能,其中包括,执行结果对标志寄存器的哪些标志位造成影响。
比如运算指令,存在运算结果的,对标志位有影响。
但如pop等传输指令,没有结果的,对标志位没有影响。
11.2 PF标志位
flag的第2位是PF,奇偶标志位(parity flag)。
它记录相关指令执行后,其结果的所有bit位中的1的个数是否为偶数。如果1的个数为偶数,pf=1,如果为奇数,那么pf=0。
注意不是结果的奇偶,而是1个数的奇偶性,这个你要明确的!
比如:
mov al,1 0000 0001
mov al,2