【问题标题】:Cannot print out integer in MIPS Assembly program无法在 MIPS 汇编程序中打印出整数
【发布时间】:2014-10-08 17:08:31
【问题描述】:

我使用 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,这是不应该的。我不知道为什么会这样。如果有人能指出我的代码中的缺陷,那就太好了。

谢谢。

【问题讨论】:

    标签: assembly mips qtspim


    【解决方案1】:

    您尝试在执行syscall 之前使用syscall 的结果:

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

    应该是:

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

    其他两个 read_int 系统调用也是如此。

    还有一个事实是您的order3 例程正在检查/更改$a0..$a2,而您的号码在$s0..$s2 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      相关资源
      最近更新 更多