汇编语言 第十一章 标志寄存器

有这样 3 种作用的特殊的寄存器,在 8086CPU 种被称为标志寄存器:

  • 用来存储相关指令的某些执行结果;
  • 用来为 CPU 执行相关指令提供行为依据;
  • 用来控制 CPU 的相关工作方式。

8086CPU 的标志寄存器有 16 位,其中存储的信息通常被称为程序状态字(PSW)。 flag 寄存器是按位起作用的,即每一位都有专门的含义,区别于其他存放数据的寄存器。

11.1 ZF 标志

flag 的第 6 位,零标志位。记录相关指令执行后,结果是否为 0,是则 zf=1,反之,zf=0。

在 8086CPU 的指令集种,有的指令是影响标志寄存器的逼入,add、sub、mul、div、inc、or、and 等,大多是运算指令;有的指令的执行对标志寄存器没有影响,比如,mov、push、pop等,大多是传送指令。

11.2 PF 标志

flag 的第 2 位,奇偶标志位。记录相关指令执行后,其结果的所有 bit 位中 1 的个数是否为偶数。若 1 的个数位偶数,pf=1,若为奇数,那么 pf=0。

11.3 SF 标志

flag 的第 7 位,符号标志位。记录相关指令执行后,其结果是否为负。若结果为

负,sf=1;否则 sf=0。

11.4 CF 标志

flag 的第 0 位,进位标志位。一般情况下,在进行无符号运算时,它记录了运算结果的最高有效位向更高有效位的进位值,或从更高位的借位值。

11.5 OF 标志

flag 的第 11 位,标志溢出位。一般情况下,OF 记录了有符号数运算的结果是否发生了溢出。若发生了溢出,则 OF=1;反之,OF=0。

注意:CF 是对无符号数运算有意义的标志位,OF 则是对有符号数运算有意义的标志位。

11.6 adc 指令

adc 是带进位加法指令,利用 CF 记录进位值。

格式:adc ax,bx

功能:(ax)=(ax)+(bx)+CF

11.7 sbb 指令

sbb 是带进位减法指令,利用 CF 记录进位值。

格式:sbb ax,bx

功能:(ax)=(ax)-(bx)-CF

11.8 cmp 指令

mcp 是比较指令,功能相当于减法指令,只是不保存结果。

格式:cmp ax,ax

功能:做 (ax)-(ax) 的运算,但并不在 ax 中保存。

通过 cmp 执行后,相关标志位的变化:

cmp 指令既可以对无符号数进行比较,也可以对有符号数进行比较。

以 cmp ah,bh 为例,总逛街 CPU 执行 cmp 指令后,sf 和 of 的值是如何说明比较结果的:

11.9 检测比较结果的条件转移指令

转移指的是它能够修改 IP,条件指的是它可以根据某种条件,决定是否修改。

将 cmp 和条件转移指令配合起来使用。

11.10 DF 标志和串传送指令

flag 的第 10 位,方向标志位。在串处理指令中,控制每次操作后 si、di 的增减。

  • df=0,每次操作后 di、si 递增;
  • df=1,每次操作后 di、si 递减。

串传送指令 movsb,相当于:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
((es)*16+(di))=((ds)*16+(si))
if df=0:
(si)=(si)+1
(di)=(di)+1
if df=1:
(si)=(si)-1
(di)=(di)-1

#汇编描述:
mov es:[di],byte ptr ds:[si]; 8086 并不支持的这样的指令,仅作描述
if df=0:
inc si
inc di
if df=1:
dec si
dec di

movsb 的功能是将 ds:si 指向的内存单元中的字节送入 es:di 中,然后根据寄存器 df 位的值,将 si 和 di 递增或递减。

串传送指令 movsw,相当于:

1
2
3
4
5
6
7
8
#汇编描述:
mov es:[di],word ptr ds:[si]; 8086 并不支持的这样的指令,仅作描述
if df=0:
add si,2
add di,2
if df=1:
sub si,2
sub di,2

movsw 的功能是将 ds:si 指向的内存字单元中的字送入 es:di 中,然后根据寄存器 df 位的值,将 si 和 di 递增 2 或递减 2。

一般来说,movsb 和 movsw 都和 rep 配合使用,rep movsb。功能是:

1
2
s:movsb
loop s

11.11 pushf 和 popf

pushf 的功能是将标志寄存器的值压栈,而 popf 是从栈中弹出数据,送入标志寄存器中。

11.12 标志寄存器在 Debug 中的表示

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×