簡體   English   中英

如何在mips組件中打印大於32位的數字?

[英]How can I print a number larger than 32 bits in mips assembly?

在我的mips匯編代碼中,我使用multi指令乘以2個大數,因為結果不適合一個寄存器。 這意味着該數字保存在hi和lo特殊寄存器中。 我的問題是如何打印乘法的結果。 我可以訪問hi和lo並將它們放在其他寄存器中(即$ t0,$ t1),但我不知道如何組合這兩個數字以便打印結果。 謝謝。

(這個答案故意保持高水平,因為我很確定沒有人在mips匯編中打印數字,除非他們正在為家庭作業分配。)

如果你不介意用十六進制表示,那就沒問題了; 只用十六進制打印一個單詞,然后打印下一個單詞。 不要忘記在第二個單詞中包含前導零! (實際上我認為spim,我認為你正在使用,只能在10號基礎上打印,所以即使這可能是一件苦差事)。

如果你想在10號基礎上,這個問題很快就會進入我稱之為“痛苦的屁股”的類別。 在“現實生活中”,我不會打擾; 在C中進行打印,某些編譯人員在某處解決了所有這些問題。 對於家庭作業,給自己寫一個功能,將輸入重復除以10,最終你會得到打印出來的數字。 如果mips沒有64位除法指令(無法告訴你我的頭腦)這對你來說是一個非常有趣的問題。

打印數字的解決方案實際上是將數字重復除以10,然后將其余的除法和存儲放在一個字符串中,然后將其顛倒讀取。 但唯一的挑戰是如果mips32只有32位除法則除以64位數。 我在這個頁面找到了一種方法:

https://www.codeproject.com/questions/714114/how-to-print-bit-in

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM