以下为详细梳理:
CF | OF | SF | ZF | PF | 分析 | |
---|---|---|---|---|---|---|
sub al,al | 0 | 0 | 0 | 1 | 1 | 判断CF:无符号运算时,无进位,CF=0 判断OF:有符号运算时,无溢出,OF=0 判断SF:结果为0,非负,SF=0 判断ZF:结果为0,SF=1 判断PF:结果0的BIN中有0个1bit,0为偶数,PF=1 |
mov al,10H | 0 | 0 | 0 | 1 | 1 | mov,push,pop不对标记位产生影响 |
add al,90H | 0 | 0 | 1 | 0 | 1 | 判断CF:无符号运算时,结果为A0H,无进位,CF=0 判断OF:有符号运算时,10H作为补码对应的原码是DEC的16,90H作为补码对应的原码是DEC的-112,结果是DEC的-96 (而-96的补码正是A0H) ,在-128~127范围内,无溢出,OF=0 判断SF:A0H (有符号和无符号运算结果都是它) 的BIN是1010 0000,最高位是1,表示负数,SF=1 判断ZF:结果非0,ZF=0 判断PF:结果含2个1bit,PF=1 |
mov al,80H | 0 | 0 | 1 | 0 | 1 | mov,push,pop不对标记位产生影响 |
add al,80H | 1 | 1 | 0 | 1 | 1 | 因是用al存储结果,只有8个有效位,第0到7; 判断CF:无符号运算时,80H+80H=100H,留给al存储的是00H,有进位,CF=1 判断OF:有符号运算时,80H作为补码对应的原码是-128,相加结果是-256,超出了8bit所能表示的范围-128~127,有溢出,OF=1 判断SF:结果00H非负则SF=0 判断ZF:结果是00H则ZF=1 判断PF:结果00H中含有0个1bit,PF=1 |
mov al,0FCH | 1 | 1 | 0 | 1 | 1 | mov,push,pop不对标记位产生影响 |
add al,05H | 1 | 0 | 0 | 0 | 0 | 判断CF:无符号运算结果为 101H,有进位,al为01H,CF=1; 判断ZF:非0,ZF=0; 判断SF:01H的BIN为 0000 0001,正值,非负则SF=0; 判断PF:有1个1bit,非偶PF=0; 判断OF:有符号运算时,FCH作为补码的原码是-4,05H作为补码的原码是正值为本身5,运算结果为正1,1作为正值补码为本身1,即01H,无溢出,由OF=0; |
mov al,7DH | 1 | 0 | 0 | 0 | 0 | mov,push,pop不对标记位产生影响 |
add al,0BH | 0 | 1 | 1 | 0 | 1 | 判断CF:7DH+0BH=88H,无进位,CF=0; 判断OF:有符号运算时,7D因是正数,原码为7D本身125。0BH也是正数,原码为0B即11,运算结果为136,超出127,有溢出,OF=0;另外136的补码为自身136,用BIN表示为1000 1000 判断SF:88H的BIN为 1000 1000 最高位是1,为负值,SF=1; 判断ZF:88H为非0,ZF=0; 判断PF:88H有2个1bit,非偶则PF=1; |