每天都在学习。写点笔记。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 |
来源:oschina
链接:https://my.oschina.net/u/105734/blog/142328