2014-10-08 85 views
1

我正在使用QTSpim作爲我的MIPS模擬器,並且很難弄清楚如何打印出用戶輸入的整數。 到目前爲止,我的代碼是:無法在MIPS彙編程序中輸出整數

.data 
prompt: .asciiz "Please enter an integer: " 

.text 
main: 
li $v0, 4 
la $a0, prompt 
syscall 

li $v0, 5 
move $s0, $v0 
syscall 

li $v0, 5 
move $s1, $v0 
syscall 

li $v0, 5 
move $s2, $v0 
syscall 

jal order3 

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

li $v0, 10 
syscall 


swap: 
move $t0, $a0 
move $a0, $a1 
move $a1, $t0 
jr $ra 

swap1: 
move $t0, $a1 
move $a1, $a2 
move $a2, $t0 
jr $ra 

order3: 
bgt $a0, $a1, swap 
bgt $a1, $a2, swap1 
bgt $a0, $a1, swap 
jr $ra 

每次我嘗試打印我的第一個整數,它打印出5,它不應該。我不知道爲什麼會發生這種情況。如果任何人都可以指出我的代碼中的缺陷會很好。

謝謝。

回答

1

你試圖使用syscallsyscall的結果已經執行:

li $v0, 5 
move $s0, $v0 
syscall 

這應該是:

li $v0, 5 
syscall 
move $s0, $v0 

同其他兩個read_int系統調用。

然後還有一個事實,即您的order3例程正在檢查/更改$a0..$a2,而您的號碼是$s0..$s2