0
所以,我的MIPS程序有用戶輸入3個整數,並從最小到最大的順序排列並打印出來。我的代碼如下:MIPS彙編程序不輸出正確的整數
.data
prompt: .asciiz "Please enter an integer: "
.text
main:
li $v0, 4
la $a0, prompt
syscall
li $v0, 5
syscall
move $s0, $v0
li $v0, 5
syscall
move $s1, $v0
li $v0, 5
syscall
move $s2, $v0
jal order3
li $v0, 1
move $a0, $s0
syscall
li $v0, 1
move $a1, $s1
syscall
li $v0, 1
move $a2, $s2
syscall
li $v0, 10
syscall
swap:
move $t0, $s0
move $s0, $s1
move $s1, $t0
jr $ra
swap1:
move $t0, $s1
move $s1, $s2
move $s2, $t0
jr $ra
order3:
bgt $s0, $s1, swap
bgt $s1, $s2, swap1
bgt $s0, $s1, swap
jr $ra
問題是程序只打印出我輸入的第一個數字。例如,如果我輸入60,50,70作爲我的3個輸入,則輸出60個三次。我不知道爲什麼這樣做。我猜它與我的order3函數或我輸出這些值的方式有關。任何幫助,將不勝感激。
謝謝。
QtSpim有一個單步按鈕和一個註冊查看器。我建議你用它們來發現問題。提示:你在幾個地方使用了錯誤的寄存器,你的'swap'子程序不會返回到'order3'子例程。 – Michael 2014-10-09 05:53:53