每天都在学习。写点笔记。remark。
8086汇编中的标识寄存器叫flag。16位每一位都标识不一样的含义,
15
14
13
12
11(OF)
10(DF)
9(IF)
8(TF)
7(SF)
6(ZF)
5
4(AF)
3
2(PF)
1
0(CF)
以上flag寄存器中各个位数表示的情况。在8086cpu中只用到了0,2,4,6,7,8,9,10,11这9个位数,其他的位数没有任何意义。
CF
Carry Flag ,进位标志位
在进行无符号运算的情况下,它记录了运算结果的最高位有效位像更高位的进位值,或从更高位的借位值
CY(carry yes 进位)
NC(No carry 未进位)
PF
Parity Flag 奇偶标志位
相关指令执行后,其结果所在bit位中1的个数是奇数或偶数,如果1个个数为偶数,则pf=1,为基数则pf=0
PE(parity even 偶)
PO(parity odd 奇数)
AF
Auxiliary Flag 辅助进位
AC(assistant carry进位)
NA(no assistant carry 无进位)
ZF
Zero Flag 零标志位
相关指令执行后,其结果是否为零,如果结果为零则zf=1 如果结果不为零则zf=0
ZF(zero等于零)
NZ(no zero不等于零)
SF
Sign Flag 符号标识位
相关指令执行后,其结果是否为负,如果为负,则sf=1如果不为负数 则sf=0
NG(negative)负
PL(plus 正)
TF
Trap Flag 追踪标志
当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试。指令系统中没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。
IF
Interrupt Flag 中断标志位
EI(enable interrupt许可)
DI(disable interrupt 禁止)
DF
Direction Flag 方向标志位
DN(Down减少)
UP(UP增加)
OF
Overflow Flag 溢出标志位
在进行有符号数运算的情况下,运算结果是否溢出,如果发生溢出,则of=1,未发生溢出 of=0
OV(overflow溢出)
NV(no overflow未溢出)
指令
含义
检测的相关标识位
je
等于则转移(equal)
zf=1
jne
不等于则转移(not equal)
zf=0
jb
低于则转移(below)
cf=1
jnb
不低于则转移(not below)
cf=0
ja
高于则转移(above )
cf=0 && zf=0
jna
不高于则转移(not above)
cf=1 && zf=1