2012-11-20 205 views
0

我試圖在MIPS中顯示一個十進制的二進制表示。但是這個程序陷入了無限循環。我無法弄清楚這個問題,所以請告訴我我做錯了什麼,這個程序是否適用於查找二進制數字的代表。下面是代碼:MIPS彙編中的十進制到二進制轉換

Loop: 

div $s0,$t1 # t1 is 2 

mflo $s0  # storing quotient in s0 for division 
mfhi $s4 

move $a0,$s4 
li $v0,1 
syscall 

beq $s4,0,Exit 

j Loop 

問候

回答

1

$s4是當前位(其餘)。你應該測試$s0零。如果您在調試器/模擬器中逐步瞭解代碼,這應該是顯而易見的。另請注意,這將以相反的順序打印數字。

如果您只需要二進制轉換,通常的方法就是使用轉換。

0

裝配中的分支伴隨其危害。通常你會拖延你的程序,直到分支被採取。這是爲了防止程序執行指令集中的下一條指令。

在你的情況下,我會嘗試在beq指令後面放置一個noopSLL $0, $0, 0

noop是對程序沒有任何影響或沒有意思的指令。