2013-05-03 54 views
0

我的程序必須接受介於0和2^32或4,294,967,295之間的輸入。MIPS 3000程序集,加載和打印32位無符號整數

哪個按位32字節應該能夠做,但我溢出到負面,因爲我不知道如何使這個無符號整數。我發現我的指令可以通過算術實現,但是如果我只是想將它加載到寄存器並打印出來呢?它現在總是打印出負數。

回答

1

int是有符號還是無符號對於它在寄存器中的存在方式無關緊要。無論哪種方式,它只是一個位序列。 2^32 -1 = 0xFFFFFF。如果你把它解釋爲一個無符號整數,這是4,294,967,295或2^32-1。如果您使用二進制補碼讀取它作爲有符號整數,則0xFFFFFFFF爲-1。我猜想問題出在你的打印命令中。嘗試將您的打印輸出格式化爲無符號。

+0

我理解你說的第一部分,但似乎沒有打印無符號整數爲MIPS 3000系統調用,所以不知道。 – SomeRandomDeveloper 2013-05-03 22:42:18

+0

我建議你展示你用來打印註冊的代碼。我不認爲這是關於MIPS的,而是關於系統調用到操作系統的,然後是關於結果的。 – 2013-05-03 23:08:20

+0

@ A.E.Drew:你可以自己將它轉換爲一個字符串(在這裏SO必須有幾十個問題),然後使用print_string syscall(4)。 – Michael 2013-05-04 07:35:38