3.5 标志位寄存器ZF,PF,SF,CF,OF

汇编语言

标志寄存器

image.png

1. ZF标志

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

例如:

mov ax,1
sub ax,1

结果不为0,zf显示NZ(not zero),结果为0,zf显示ZR(zero)

image.png

2. PF标志

  • flag的第2位是PF,奇偶标志位。
  • 其结果的所有bit为中1的个数是否为偶数
  • 为偶数,pf=1,为奇数,pf=0

例如:

mov ax,0
add ax,1
add ax,1
add ax,1

image.png
当ax为1时(0001b),bit中1个1,则奇数个1,pf为po
当ax为3时(0011b),bit中2个1,则偶数个1,pf为pe

3. SF标志

  • flag的第7位是SF,结果为负,SF=1;如果非负,SF=0
  • 在我们将数据当做有符号数来运算的时候,可以通过它来得知结果的正负
  • 如果我们将数据当做无符号数来运算,SF的值则没有意义

例如:

mov ax,0
add ax,1
sub ax,2

image.png

  • 当结果为正数时,SF=0,显示PL(positive number)
  • 当结果为负数时,SF=1,显示NG(negative number)

4. CF标志

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

例如:

mov al,1
add al,1
add al,ff

image.png

  • CF为CY(carry),表示进位
  • CF为NC(not carry),表示没有进位

5. OF标志

  • 在进行有符号数运算的时候,结果超过了机器所能表示的范围称为溢出
  • 指令运算的结果用8位寄存器或内存单元来存放,对于8位的有符合数据,机器所能表示的范围就是-128~127
  • 如果运算结果超出了机器所能表达的范围,将产生溢出

image.png

  • OF为NV(not over flow),表示没有溢出
  • OF为OV(over flow),表示溢出
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值