系统调用 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
我只是想知道为什么这不起作用:
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