首页 > 编程语言 >汇编 标志寄存器 ZF/PF/SF/CF/OF标志 adc/sbb/cmp指令 pushf和popf 检测比较结果

汇编 标志寄存器 ZF/PF/SF/CF/OF标志 adc/sbb/cmp指令 pushf和popf 检测比较结果

时间:2023-03-14 12:37:40浏览次数:41  
标签:标志 popf 结果 ZF al pf ax 执行 zf


标志寄存器

CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能)具有以下3中作用。

  1. 用来存储相关指令的某些执行结果。
  2. 用来为CPU执行相关指令提供行为依据。
  3. 用来控制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标志

  1. flag的第6位是ZF,0标志位。
  2. 记录相关指令执行后,其结果是否为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 标志

  1. flag的第2位是PF,奇偶标志位。
  2. 记录相关指令执行后,其结果的所有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标志


标签:标志,popf,结果,ZF,al,pf,ax,执行,zf
From: https://blog.51cto.com/u_16006123/6120300

相关文章