小熊猫party 发表于 2012-1-2 02:11:42

课本217页 OF标志问题

有符号数:

                  moval,98   
                     add al , 99


结果是 (al)=(al)+99=98+99=197
而结果197超出了机器所能表示的8位有符号数的范围:-128~127。

我把99和98和197换成了二进制

98:   0110 0010B
99:   0110 0011B
197:   1100 0101B

注释:没有见溢出啊!!!

因为书上没有说数是多少进制,见没有进制符号应该是10进制,接着197转换成十六进制 (al)=0C5H ,05H补码后(-59),如果我们用add指令进行的时有符号数运算,则98+99=(-59) 这样的结果让人无法接受?(什么意思)


建议真心帮助的朋友请麻烦大家翻翻课本,因为我写的内容概括罢了!


比如:mov al,90
         addal,40

那么al=al+40=90+40=130

130的二进制数:1000 0010B
转换成十六进制:82H
补码后: 0111 1110B=(-126)
结果90+40=(-126) 因为有了最高位是1被迫补码看数!!!数据变了,变了还不成作者说这是结果,什么逻辑啊!!!

小熊猫party 发表于 2012-1-2 02:14:12

提示:可能我对溢出理解不够深刻,千万不要被我误导!

nbceshi 发表于 2012-1-2 15:56:05

嘿嘿,我告诉一个窍门,书上太罗嗦了,看了容易晕。进位我就不说了,容易懂,就说溢出。
加法溢出:两个正数相加,如果符号位改变了,表示溢出了。两个负数相加,符号位改变了,表示溢出了。
减法溢出:正数减负数,符号位改变,表示溢出了。负数减正数,符号位改变了,表示溢出了。
其他,正数负数相加,无论符号位怎么变都不会溢出。{:5_108:}我讲的简单吧。
页: [1]
查看完整版本: 课本217页 OF标志问题