8 标志寄存器

标志寄存器

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

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

flag 寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O8NvTROb-1670664830858)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221208124857416.png)]

1 flag寄存器标志

在Debug 中,标志寄存器是按照有意义的各个标志位单独表示的。在Debug 中,我们可以看到下面的信息。

在这里插入图片描述

1.1 ZF标志

flag 的第6 位是ZF,零标志位。它记录相关指令执行后,其结果是否为0 。如果结果为0,那么zf=1 ;如果结果不为0,那么zf=0。

1.2 PF标志

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

1.3 SF标志

flag 的第7 位是SF ,符号标志位。它记录相关指令执行后,其结果是否为负。如果结果为负, SF=l ;如果非负, SF=0 。

1.4 CF标志

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

1.5 OF标志

对于无符号数运算, CPU 用CF 位来记录是否产生了进位;对于有符号数运算, CPU 用OF 位来记录是否产生了溢出,当然,还要用SF 位来记录结果的符号。

2 指令

2.1 adc指令

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

指令格式: adc 操作对象1 ,操作对象2
功能: 操作对象1 =操作对象1 +操作对象2 + CF
比如指令adc ax,bx 实现的功能是:(ax)=(ax)+(bx)+ CF

2.2 sbb指令

sbb 是带借位减法指令,它利用了CF 位上记录的借位值。

指令格式: sbb 操作对象l ,操作对象2
功能:操作对象l =操作对象1-操作对象2-CF
比如指令sbb ax,bx 实现的功能是:(ax)=(ax)-(bx)-CF

2.3 cmp指令

cmp 是比较指令, cmp 的功能相当于减法指令,只是不保存结果。cmp 指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。

cmp 指令格式: cmp 操作对象1 , 操作对象2
功能:计算操作对象1-操作对象2 但并不保存结果,仅仅根据计算结果对标志寄存器进行设直。

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

指令含义检测的相关标志位

je等于则转移zf=1
jne不等于则转移zf=0
jb低于则转移cf =1
jnb不低于则转移cf=0
ja高于则转移cf=0 且zf=0
jna不高于则转移cf=1 或zf=1

4 DF 标志和串传送指令

4.1 DF标志

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

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

4.2 movsb指令

用汇编语法描述movsb 的功能如下。

moves : [di],byte ptr ds: [si)   ;8086 并不支持这样的指令,这里只是个描述
如果df=O:
lnc si
inc di
如果df=l:
dec si
dec di

5 pushf 和popf

pushf 的功能是将标志寄存器的值压栈,而popf 是从栈中弹出数据,送入标志寄存器中。
pushf 和 popf,为直接访问标志寄存器提供了一种方法。

5 pushf 和popf

pushf 的功能是将标志寄存器的值压栈,而popf 是从栈中弹出数据,送入标志寄存器中。
pushf 和 popf,为直接访问标志寄存器提供了一种方法。

在Debug 中,标志寄存器是按照有意义的各个标志位单独表示的。在Debug 中,我们可以看到下面的信息。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值