标志寄存器
CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能)具有以下3中作用。
- 用来存储相关指令的某些执行结果。
- 用来为CPU执行相关指令提供行为依据。
- 用来控制CPU的相关工作方式。
8086CPU的flag寄存器的结构如图下所示
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
OF | DF | IF | TF | SF | ZF | AF | PF | CF | |||||||
空出来的说明在8086CPU中没有使用,布局有任何含义。 |
1 ZF标志
- flag的第6位是ZF,0标志位。
- 记录相关指令执行后,其结果是否为0,
if = 0; zf = 1
if != 0; zf = 0
eg.
mov ax,1
sub ax,1
执行后,结果为0,则zf=1
mov ax,1
add ax,0
执行后,结果为0,则zf=1,表示“结果是0”
mov ax,1
or ax,0
执行后,结果不为0,则zf=0,表示“结果非0”
2 PF 标志
- flag的第2位是PF,奇偶标志位。
- 记录相关指令执行后,其结果的所有bit位中
1
的个数
是否为偶数
,
if 偶数 则 pf = 1
if 奇数 则 pf = 0
eg.
mov al,1
add al,10
执行后,结果为00001011B,其中3(奇数)个1,则 pf = 0;
mov al,1
or al,2
执行后,结果为00000011B,其中有2(偶数)个1,则 pf = 1;
sub al,al
执行后,结果为00000000B,其中有0(偶数)个1,则 pf = 1;
3 SF标志