小熊猫party 发表于 2012-1-2 05:00:43

关于有符号数加法溢出问题!

mov al,0F0H
addal,88H

课本上说 add 指令 执行后:CF=1,OF=1。对于无符号数运算,0F0H+88H有进位,CF=1,对于有符号数运算,0F0H+88H发生溢出,OF=1

mov al,0F0H
addal,78H

课本上说 add 指令 执行后:CF=1,OF=0。对于无符号数运算,0F0H+78H有进位,CF=1,对于有符号数运算,0F0H+88H发生溢出,OF=0


第一个和数是120,第二个和数是104 都没有超过127为什么说OF=1 ????

nbceshi 发表于 2012-1-2 16:06:23

嘿嘿,我告诉一个窍门,书上太罗嗦了,看了容易晕。进位我就不说了,容易懂,就说溢出。
加法溢出:两个正数相加,如果符号位改变了,表示溢出了。两个负数相加,符号位改变了,表示溢出了。
减法溢出:正数减负数,符号位改变,表示溢出了。负数减正数,符号位改变了,表示溢出了。
其他,正数负数相加,无论符号位怎么变都不会溢出。{:5_108:}我讲的简单吧。

小熊猫party 发表于 2012-1-3 01:53:39

很抱歉我这么晚才来回帖,麻烦再看看我的回答!


mov al,0F0H
addal,88H


我算的结果:

    1111 0000
+    1000 1000
______________
   10111 1000

证明进位和溢出,证明你说的有点道理,接着我又看了下一条!

mov al,0F0H
addal,78H

我算的结果:


      1111 0000
+      0111 1000
      10110 1000

符号位改变了按你说的方法证明了它溢出了,但是课本上说没有溢出=0 !!!!!这到底是?   

nbceshi 发表于 2012-1-3 13:53:35

请仔细看,正数和负数相加,都不会溢出,我上面已经讲了。

小熊猫party 发表于 2012-1-3 15:14:43

不好意思,没认真看答案!

      1111 0000
+       0111 1000

——————————
         0110 1000


那么这题运算结果是0110 1000吗?

小熊猫party 发表于 2012-1-3 15:50:51

你上面没有说明两个正数相减 会怎么样 两个负数相减又会怎么样。

小熊猫party 发表于 2012-1-3 15:51:03

你上面没有说明两个正数相减 会怎么样 两个负数相减又会怎么样。

chao_prince 发表于 2012-1-3 17:28:24

两个正数相减。。也是属于一个正数一个负数。。

小熊猫party 发表于 2012-1-3 17:35:11

前面说了有两种!

减法溢出:正数减负数,符号位改变,表示溢出了。负数减正数,符号位改变了,表示溢出了。
其他,正数负数相加,无论符号位怎么变都不会溢出。

你说两个正数相减。。也是属于一个正数一个负数。。 我就不知道意思了!

nbceshi 发表于 2012-1-3 19:20:26

{:5_100:}小熊猫,你得补下初中数学了.
正数相减+a - +b = +a + -b
负数相减-a - -b = -a + b

小熊猫party 发表于 2012-1-4 03:04:53

:L 是真的要找老师了 呵呵!有兴趣当我的数学老师和语文老师吗? 月收入XX00
页: [1]
查看完整版本: 关于有符号数加法溢出问题!