汇编语言阅读笔记【特殊寄存器】

1、参考

汇编语言-王爽spa

2、正文

2.1 标志寄存器

CPU内部的寄存器中,有一种特殊的寄存器,具备下面的3种做用:
(1)用来存储相关指令的某些执行结果
(2)用来为CPU执行相关指令提供行为依据;
(3)用来控制CPU的相关工做方式
这种特殊的寄存器,称之为标志寄存器flag,存储的信息一般称为程序状态字PSWblog

flag和其余寄存器不同,其余寄存器用来存放数据,都是整个寄存器具备一个含义,可是flag寄存器是按照位起做用,每一位都有不一样含义,记录特定的信息get

image.png

flag的1,3,5,12,13,14,15位在8086CPU中没有使用,不具备任何含义,可是其余位具备特殊含义it

2.1.1 ZF标志

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

在8086CPU的指令集中,有的指令的执行是影响标志寄存器的,例如:
add, sub, mul, div, inc, or, and等等,大都是运算指令(进行逻辑或者算术运算),有的指令的执行对于标志寄存器没有影响,例如:mov, push, pop等等,大都是传送指令,在使用一条指令时候,须要注意这条指令的所有功能,包括,执行结果对于flag的哪些标志位形成影响。程序

2.1.2 PF标志

flag的第2位是PF,奇偶标志位,记录相关指令执行后,其结果全部的bit位中1的个数是否位偶数,若是1的个数为偶数,则pf=1, 若是为奇数,那么pf=0im

2.1.3 SF标志

flag的第7位是SF, 符号标志位,记录相关指令执行后,其结果是否位负数,若是结果为负数,sf=1, 若是结果为非负数,sf=0
计算机中一般使用补码来表示有符号数据,计算机中y一个数据能够看做是有符号数,也能够当作是无符号数
SF标志,CPU对有符号数运算结果的一种记录,记录数据的正负,若是将数据看成有符号数来运算,能够经过SF得知结果的正负,若是将数据看成无符号数来运算,SF的值没有意义,虽然相关的指令影响了它的值。数据

2.1.4 CF标志

flag的第0位是CF,进位标志位,通常状况下,在进行无符号数运算时候,CF记录运算结果的最高有效位向更高位的进位值,或者从更高位的借位值。
image.pngimg

2.1.5 OF标志

flag的第11位是OF,溢出标志位,通常状况下,OF记录了有符号数运算的结果是否发生了溢出,OF=1, 若是没有,OF=0计算机

CF和OF的区别,CF是对无符号数运算有意义的标志位,而OF是对有符号数运算有意义的标志位

相关文章
相关标签/搜索