所以,我的 MIPS 程序让用户输入 3 个整数,然后将它们从小到大排序,然后打印出来。我的代码如下:
.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 函数或我输出这些值的方式有关。任何帮助,将不胜感激。
谢谢。