文章目录
前言
参考书籍:
王爽。汇编语言。北京:清华大学出版社, 2013:213-1
本人菜狗一枚,不敢咬文嚼字,只能站在巨人的肩膀上窥探一下未曾了解的世界。
CPU 内部的寄存器中,有一种特殊的寄存器,具有以下 3 种作用
- 用来存储相关指令的某些执行结果
- 用来为 CPU 执行的相关指令提供行为依据
- 用来控制 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&