作者wucrhow (铬)
看板CSMU-D99
标题[解答]第二章第9题 给泓诺的~
时间Tue Apr 19 03:10:44 2011
第2章第9题详解(很难没一定水平的请勿看下去,这会花掉你很多时间)
80X86 CPU 的 Overflow 状态旗标是来指示有号数运算的结果是否有溢位。
硬体的运算法则并非由 80X86 所订定,而是依照二进位有号数加法的理论完成的。在以8位元(=1 BYTE)所表示的有号数中,位元7(MSB)代表的是正负号,0代表正数、1代表负数,位元6~0代表大小,正数以二进位制方式表示,负数以二进位制的补数表示,因此8位元可以描述负128到正127之间的数值。
当两8位元的有号数相加的结果有"溢位"就代表相加的结果比-128还小或比+127还大。所以,如果一正数与一负数相加,不管如何绝对不会溢位;如果两正数相加,其结果仍然应该是正数,如果两负数相加,其结果扔然应该是负数。如果不是,那就表示发生溢位了,80x86会设定溢位状态旗标!
1)7FH+FFH
0111 1111
1111 1111
7F+FF=7E, 正数+负数, 绝不会溢位, 应设定 Overflow=0
2)7FH+B9H
0111 1111
1011 1001
7F+B9=38, 正数+负数, 绝不会溢位, 应设定 Overflow=0
3)72H+55H
0111 0010
0101 0101
72+55=C7, 正数+正数=负数, 正负号反转, 代表溢位,应设定 Overflow=1
4)BFH+CFH
1011 1111
1100 1111
BF+CF=8E, 负数+负数=负数, 正负号相同, 没有溢位,应设定 Overflow=0
我最近狂发废文诶~不知道有没有机会当选废文王??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.51.139
1F:推 herculus6502:很优啊,推一个!!如果要写asm的话这个是非懂不可! 04/19 04:23
2F:推 stylecoolme:所以H是? 04/19 09:04
3F:推 herculus6502:第8个英文字母XD~~啊其实是hex意指16进位数字 04/19 11:43
4F:推 TMD04:.....这也太晚了一点 04/19 12:29