我只是想知道为什么这不起作用:
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是存储退货的寄存器。
答案 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
。