死亡请帖 发表于 2011-7-26 15:30:00

溢出标志位OF是怎么算出来的?

本帖最后由 死亡请帖 于 2011-7-27 10:48 编辑

下面是书上的两个例子:
   1111 0000
+ 0111 1000
─────────
1 0110 1000               没有溢出OF=0

   1111 0000
+ 1000 1000
─────────
1 0111 1000               发生溢出OF=1

我知道有符号的不应该这样算,但CPU就是这么算的,它不会先求补码的反码加1,它内部就是这么算的,那么它是怎么得出OF的值的?
从CPU的角度想。

死亡请帖 发表于 2011-7-27 10:01:06

{:5_98:}顶!!!

小乌龟 发表于 2011-7-27 10:10:42

我怎么觉得两个都溢出了……

无比菜鸟 发表于 2011-7-27 10:45:21

cpu 如何判断数据是否溢出(转贴)
http://bbs.fishc.com/forum.php?mod=viewthread&tid=3416&fromuid=106565

死亡请帖 发表于 2011-7-27 10:46:27

小乌龟 发表于 2011-7-27 10:10 static/image/common/back.gif
我怎么觉得两个都溢出了……

那两个1吗,是进位。

死亡请帖 发表于 2011-7-27 10:47:54

无比菜鸟 发表于 2011-7-27 10:45 static/image/common/back.gif
cpu 如何判断数据是否溢出(转贴)
http://bbs.fishc.com/forum.php?mod=viewthread&tid=3416&fromuid=106 ...

{:5_98:}兄弟,正是我需要的!

lijiediao 发表于 2019-6-15 11:36:59

本帖最后由 lijiediao 于 2019-6-15 11:42 编辑

小乌龟 发表于 2011-7-27 10:10
我怎么觉得两个都溢出了……

我也觉得两个都溢出



例如:设A=78H、R1=64H ,分析执行指令 ADDA,R1后对PSW中标志位的影响。
             78H  01111000
            +64H  01100100
          ——————————
                   11011100
   执行后,C=0、AC=0,次高位有进位但最高位无进位,故OV=0⊕1=1

页: [1]
查看完整版本: 溢出标志位OF是怎么算出来的?