作者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