标志寄存器

标志寄存器


1.标志寄存器概念

CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能不同),这种特殊的寄存器在8086CPU中,被称为标志寄存器(flag),其具有以下3种作用:

  1. 用来存储相关指令的某些执行结果
  2. 用来为CPU执行相关指令提供行为依据
  3. 用来控制CPU的相关工作方式

8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW-Program Status Word),flag寄存器是按位起作用的,它的每一位都有专门的含义,记录特定的信息

请添加图片描述


1.1 零标志位(ZF)

  1. 零标志位(Zero Flag):它记录相关指令执行后,其结果是否为0
  2. 如果结果为0,那么zf = 1(表示结果是0);如果结果不为0,那么zf = 0
mov ax, 1
sub ax, 1 ;执行后,结果为0,则zf = 1

mov ax, 2
sub ax, 1 ;执行后,结果不为0,则zf = 0

1.2 奇偶标志位(PF)

  1. 奇偶标志位(Parity Flag):它记录相关指令执行后,其结果的所有bit位中1的个数是否为偶数
  2. 如果1的个数为偶数,pf = 1,如果为奇数,那么pf = 0
mov al, 1
add al, 10 ;执行后,结果为00001011B,其中有3(奇数)个1,则pf = 0;

mov al, 1
or al, 2  ;执行后,结果为00000011B,其中有2(偶数)个1,则pf = 1

1.3 符号标志符(SF)

  1. 符号标志位(Symbol Flag):它记录相关指令执行后,其结果是否为负
  2. 如果结果为负,sf = 1;如果非负,sf = 0
  3. 计算机中通常用补码来表示有符号数据。计算机中的一个数据可以看作是有符号数,也可以看成是无符号数
    • 00000001B,可以看作为无符号数1,或有符号数+1
    • 10000001B,可以看作为无符号数129,也可以看作有符号数-127
  4. 对于同一个二进制数据,计算机可以将它当作无符号数据来运算,也可以当作有符号数据来运算
  5. CPU在执行add等指令的时候,就包含了两种含义:可以将add指令进行的运算当作无符号数的运算,也可以将add指令进行的运算当作有符号数的运算
  6. SF标志:就是CPU对有符号数运算结果的一种记录,它记录数据的正负。在我们将数据当作有符号数来运算的时候,可以通过它来得知结果的正负。如果我们将数据当作无符号数来运算,SF的值则没有意义,虽然相关的指令影响了它的值
mov al, 10000001B 
add al, 1   ;执行后,结果为10000010B,sf = 1,表示:如果指令进行的是有符号数运算,那么结果为负;

mov al, 10000001B
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值