我想請問一下
有誰會用組語的語法寫超大位數相加嗎?
之前有用過c語言寫過
但是換成組語以後
就有點卡住了
因為對組語的語法不太熟
有誰會用組語語法寫超大位數相加嗎?
或是給個概念就好!謝謝!!
2007-12-06 10:21:47 · 2 個解答 · 發問者 SamuelHo 1 in 電腦與網際網路 ➔ 程式設計
我盡量試試
因為有些函數要在看書才懂ˊˋ
2007-12-11 19:53:24 · update #1
看你要幾位數.
我用16位元組合語言為例 ,支援到 128 位元 的加法
你要定義
Equ A1,A2,A3,A4,A5,A6,A7,A8 每個都是16位元資料
Equ B1,B2,B3,B4,B5,B6,B7 每個都是16位元資料
A1,B1 的第一個Bit 如果你要做有正負號,就是補數系統 0代表正
1 代表負
當然你輸入,是十進制系統.你先要把10進制轉成16進制.在放入A跟B中
與法如下. A7+B7
有進位 A6+1+B6
無進位 A6+B6
有進位 A5+1+B5.........
一直做到A7+B7 就結束了
有這個概念,你要持執行超大位數的成法,除法都不是問題
2007-12-06 11:43:29 · answer #1 · answered by flymouse.tw 7 · 0⤊ 0⤋
樓上的說法就是叫你在資料節區宣告2個標名 記憶體空間,然後你的加法程式就在記憶體中執行處理,這樣比放在暫存器處理還可處理更多位元。
假設你要設32位元的資料長度可以在資料節區這樣宣告
MSG1 DB 32DUP(?)
MSG2 DB 32DUP(?)
------------------
那麼CPU在記憶體資料節區中就分配了2個32BYTE的空間 ,其標名分別為MSG1、MSG2
而這32BYTE你可以將第1個BYTE就當你加法程式的最高位元即第32個位元,最後一個BYTE就當第一位元。
然後呢 程式剛開始 你必須將輸入的2位數分別寫入MSG1、MSG2這2個記憶空間後,才開始處理相加程式,當然進位怎判斷 就請您想想看吧! 是你說概念就好的= =
你再問的是演算法@@ 如何處理輸入到輸出結果的過程!
2007-12-11 17:00:25 補充:
加油捏@@
2007-12-08 03:18:50 · answer #2 · answered by eric 7 · 0⤊ 0⤋