【不求甚解】《汇编语言》第 11 章:标志寄存器

本文深入解析8086CPU的标志寄存器,包括ZF(零标志)、PF(奇偶标志)、SF(符号标志)、CF(进位标志)和OF(溢出标志)。通过实例说明它们在无符号和有符号运算中的作用,以及如何影响abc、sbb和cmp等指令的执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

参考书籍:
王爽。汇编语言。北京:清华大学出版社, 2013:213-1

本人菜狗一枚,不敢咬文嚼字,只能站在巨人的肩膀上窥探一下未曾了解的世界。


CPU 内部的寄存器中,有一种特殊的寄存器,具有以下 3 种作用

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

这种特殊寄存器在 8086CPU 中,被称为标志寄存器

8086CPU 的标志寄存器(简称 flag)有 16 位,其中存储的信息通常被称为程序状态字(PSW)。flag 寄存器是按位起作用的,每一位都有专门的含义,记录特定的信息。
在这里插入图片描述
flag 的 1、3、5、12、13、14、15 位在 8086CPU 中没有使用,不具有任何含义,而 0、2、4、6、7、8、9、10、11 位都具有特殊的含义。

在 8086CPU 的指令集中,有的指令执行是影响标志寄存器的,如 add 等运算指令,而有的指令执行对标志寄存器没有影响,如 mov 等传达指令

ZF 标志

flag 的第 6 位是 ZF,零标志位(Zero flag)。它记录相关指令执行后,其结果是否为 0

执行结果 零标志位
0 ZR(1)
非 0 NZ(0)
; 执行后, 结果为 0, 则 zf = 1
mov ax, 1
sub ax, 1

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

; 执行后, 结果为 0, 则 zf = 1
mov ax, 1
and ax, 0

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

在计算机中 0 表示逻辑假,表示否定,1 表示逻辑真,表示肯定。

PF 标志

flag 的第 2 位是 PF,奇偶标志位(Parity flag&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值