Syscall print int

时间:2016-04-19 06:10:29

标签: mips

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

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是存储退货的寄存器。

1 个答案:

答案 0 :(得分:2)

首先,你在这里遇到语法错误:

li, $a0, $v0

li之后应该没有逗号。

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

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