标志寄存器(8086CPU)
作用
用来存储相关指令的某些执行结果
用来为CPU执行相关指令提供行为依据
用来控制CPU的相关工作方式
大小
标志寄存器有16位
使用方式
标志寄存器是按位起作用,也就是说每一个位都有专门的含义,记录特定的i西南西
flag的1、3、5、12、13、14、15位在8086CPU中没有使用,不具有任何含义。而0、2、4、6、7、8、9、10、11位都具有特殊的含义
ZF标志,在第6位,结果为0则为1,否则为0
zf (Zero Flag) 是零标志位,在第6位;它记录相关指令执行后,其结果是否为0,如果为0,那么zf = 1;否则zf = 0
例如
mov ax, 1
sum ax, 1
执行后, 结果为0,则zf = 1
mov ax, 2
sum ax, 1
执行后,结果不为0,则zf = 0
注意
在指令执行的过程中,有些指令对标志寄存器有影响,比如:add、sum、mul、div、inc、or、and等,他们大都是运算指令;而有些指令对标志寄存器没有影响,比如:mov、push、pop等,他们大都是传送指令。在使用一条指令的时候,要注意这条指令的全部功能,其中包括,执行结果对标志寄存器的哪些标志位产生了影响。
PF标志,在第2位,结果中1的个数为偶数则为1,否则为0
pf( Parity Flag)表示奇偶标志位,在第2位;他记录的是相关指令执行后,如果所有的bit位中1的个数是否为偶数。如果1的个数位偶数,pf = 1,如果为奇数,那么pf = 0
例如:
mov al, 1
add al, 10
执行后结果为1011B,其中有3(奇数)个1,则pf = 0
mov al, 1
or al, 2
执行后,结果为:11B,其中有2(偶数)个1,则pf = 1
SF 标志,在第7位,结果为负则为1,否则为0;有符号运算有效
sf(Symbol Flag)表示符号标志位,在第7位;它记录相关指令执行后,其结果是否为负。如果为负,则sf = 1;如果非负,sf = 0
通常CPU计算的时候有两种方式,一种是有符号的计算,一种是无符号的计算。
SF标志,就是CPU对有符号数运算结果的一种记录,他记录数据的正负。
如果我们将数据进行无符号运算ÿ