林試圖做mul
或add
與兩個數(MASM 32位彙編),即它的結果將是大然後是32位。
但問題是,我不知道如何存儲結果。例如,如何把MUL 的結果添加更大然後DWORD在一個雙字寄存器或陣列(MASM)
例如,mul
指令將結果放在eax
(32位寄存器),但如果我想將2個數相乘,結果會大於32位,則該值在eax中壓縮,沒有真正的結果。並加上同樣的問題..
所以,我做了一個mul
或add
兩個數字,結果是大於32位?我想創建一個數組,添加一個循環(如果我的數字是100,那麼循環將會是100次,並且在我將數字添加到它自己內部),並將數字存儲在數組中,因此該值將在陣列的所有點差,但2個問題:
當我做:
mov ebx,offset arr
然後mov [ebx],result
結果不塗抹在所有陣列的,其壓縮在第一個DWORD細胞(結果 - 是mul或add的結果,arr是用於存儲結果的dword的數組)我不知道陣列的長度Ë是,我不希望把一個大數目白白..
所以,我做MUL或兩個數字的是它的結果是更大然後32位,並存儲該導致某處,而不是在32位大小的壓縮?
謝謝!
嘿,從我的理解來看,最大的結果是64位大小。但我的程序需要顯示任何結果,甚至比64位大。所以如果結果大於64位,並且進位位打開,那麼我該如何處理這些信息呢?它不能幫助我,因爲我需要mul的確切結果。 (也許我不明白你的意思嗎?你可以舉一個例子來說明如何放入數組或者註冊2個數的乘法結果,甚至大於64位?)謝謝! –
哦,等等,你製作的兩行代碼正在處理任何結果?甚至比64位更大?我所理解的是,你將'eax'作爲結果的一部分,並且'edx'結果的第二部分+攜帶標誌的結果的其餘部分保持不變?你可以再解釋我,因爲我有點困惑你在那裏做了什麼......再次感謝:) –
@RoyKuper - 如果你想要超過64位產品,你必須自己實現乘法。就像你在學校做的那樣做。至於加法,'adc'指令允許你鏈接任意數量的加法,所以你可以根據需要添加(或減去,使用'sbb')儘可能多的「部分」。只需添加更多'adc'說明! – owacoder