3楼或者知道的能把下面的3个不懂之处也解释下,谢谢了。
CF OF SF ZF PF
mov al,80H 0 0 1 0 1 1000 0000
add al,80H 1 1 0 1 1 1 0000 0000
mov al,0FCH 1 1 0 1 1 1111 1100
add al,05H 1 0 0 0 0 1 0000 0001
mov al,7DH 1 0 0 0 0 111 1101
add al,0bH 0 1 1 0 1 1000 1000
问题1:解释 add al,80H,为什么OF=1和80H是多少?
问题2:解释 add al,05H,为什么OF=0和0FCH是多少?
问题3:解释 add al,0bH,为什么OF=1和7DH是多少?
------------------
回复:问题1:80H,二进制下是10000000。在有符号数的情况下,首位为1,所以是用补码表示的有符号数,其绝对值可用反码+1计算出(具体见书后附注不再赘述),为-128。执行add al,80H 得al=100H,在无符号的情况下CF进位,在有符号的情况下溢出(8位有符号数的取值范围为-128~127),OF=1。
问题2:0FCH=11111100b,有符号数的情况下为-4,无符号数的情况下为252;05h=00000101b,有符号数情况下为5,无符号数情况下为5。所以在有符号数的情况下,相加为1,不溢出,OF=0。
问题3:7DH=01111101b,有符号数情况下,首位为0,故为正值=125;0BH=00001011,有符号数情况下=5。在有符号数情况下相加,为130,溢出,所以OF=1。
这个里面的问题1中80H为负数-128,执行add al,80H,就是-128+(-128)=-256,结果是负数,怎么SF是0呢
还有问题3:7DH=01111101b,有符号数情况下,首位为0,故为正值=125;0BH=00001011,有符号数情况下=5。在有符号数情况下相加,为130,溢出,所以OF=1。不管是有符号数还是无符号数,其结果都是整数,怎么SF=1呢
请哪位解答下 |