系统调用 print int

Syscall print int

我只是想知道为什么这不起作用:

Print Integer:   li $v0, 1
             li, $a0, $v0     #with $v0 being an added up value
             syscall

但是,这有效:

Print Integer:  li $v0, 1
        li, $a0, 100
        syscall

是否有任何寄存器可用于打印已被算法更改的整数?我一直以为$v0是存放returns.

的寄存器

首先,你这里有一个语法错误:

li, $a0, $v0

li后不能有逗号。

其次,li伪指令的目的是加载immediates(例如1、0x42或12345)。如果要将一个寄存器的内容移动(复制)到另一个寄存器,请使用 move(如 move $a0, $v0)。

最后,您在代码的第一行为 $v0 分配了值 1,因此即使您正确地输入了 move $a0, $v0,您也总是会得到 $a0 = 1。如果您想要 $v0 的先前值,则必须在 li $v0, 1.

之前执行 move $a0, $v0