各位老大,这里有一个超容易的问题,等于是给大家散分的,问题是这样的。
已知AX = 8600H。
ADD AX, 1234H后CF、ZF、SF、OF、AF、PF的值是什么?
我计算的结果是CF=0, ZF=0, PF=1, SF=1, OF=0, AF=0.但是书上却是PF=0???为什么啊!
1000 0110 0000 0000
+ 0001 0010 0011 0100
————————————
1001 1000 0011 0100
CF=0,ZF=0,SF=1,PF=0,AF=0
这里的PF指的是低八位数据的数据位中1的个数,偶数则为1,奇数为0
from philosophia()...end...
up
▓▓▓▓▓ ▓▓▓ ▓▓▓▓
▓ ▓ ▓ ▓ ▓ ▓ ▓
▓ ▓ ▓ ▓ ▓
▓ ▓ ▓ ▓▓▓
▓ ▓ ▓ ▓
▓ ▓ ▓ ▓
▓ ▓ ▓ ▓
▓▓▓ ▓▓▓ ▓▓▓
▓▓▓▓▓ ▓▓▓ ▓▓▓▓
▓ ▓ ▓ ▓ ▓ ▓ ▓
▓ ▓ ▓ ▓ ▓
▓ ▓ ▓ ▓▓▓
▓ ▓ ▓ ▓
▓ ▓ ▓ ▓
▓ ▓ ▓ ▓
▓▓▓ ▓▓▓ ▓▓▓
SF当然是0了,你可以算一算,SUB BH,BL也就是90H-48H,结果为48H,也就是2进制的
01001000,最高位为0,SF与运算结果的最高位相同,所以是0,你的错误在于你没有把最高位写上,你只写了7位,字节都是8位的,高位没有就补0。
对于OF标志,我也没弄明白呢,不过书上写的对于减法指令,OF标志反应带符号书的溢出,其设置是这样规定的:如果两个操作数符号相反,而结果的符号与减数相同,那么说明有溢出,OF=1,其余情况说明没有溢出,OF=0,对于这道题我的理解是把90H和48H看作有符号数,因为90H的2进制最高位为1,是负数,48H最高位是0,是正数,所以两个操作数符号相反,结果为48H,和减数相同,所以最高位的符号也和减数相同,说明有溢出,所以OF=1,我是按照书上来推断的,正确与否不得而知,不过我觉得我们两个很像,对于一些问题非要弄明白不可,很希望以后能多交流,我的QQ是59574547
up
upupupupupupupupupupupupupupupupupupupupupupupupupupupup
标志位的设置是个麻烦事,我经常为此而困扰。
up