我使用QTSpim作为我的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,它不应该打印出来。我不知道为什么会这样。如果有人能够指出我的代码中的缺陷会很棒。
感谢。
答案 0 :(得分:1)
您尝试在执行syscall
之前使用syscall
的结果:
li $v0, 5
move $s0, $v0
syscall
应该是:
li $v0, 5
syscall
move $s0, $v0
其他两个read_int
系统调用相同。
然后还有一个事实是,您的order3
例程正在检查/更改$a0..$a2
,而您的号码在$s0..$s2
。