我一直在努力学习如何在Mars上使用Assembly MIPS32进行编程。 我有一个问题,我想做一个返回整数的函数(我不知道它是否被调用)。 基本上我想创建一个方法,要求用户插入一个数字,并将该数字添加到之前请求的另一个数字 这是我提出的,但我不知道如何将值返回到$ s2
New:
la $a0, prompt2 # Print string "Input: "
li $v0,4
syscall
li $v0,5 #Read int x
syscall
jr $ra
Add:
j New
add $s1, $s1, $s2 #add Int $s1 and $s2 and save them to $s1
j loop
如果有人有任何建议或修正,请回复。 提前致谢
答案 0 :(得分:0)
MIPS处理器通常使用$v0
作为函数返回值。当然,您可以自由地为自己的功能提出任何调用约定,但除非您有充分的理由不坚持使用$v0
来表示返回值。
此外,要调用某个功能,您通常会使用jal
,因为这是设置$ra
注册表的内容,以便您以后可以使用jr $ra
返回。
如果您还没有,我建议您下载 MIPS32™架构程序员第二卷:MIPS32™指令集并阅读jal
和jr
的方式工作(或任何其他你认为你不完全理解的指示)。
因此,您在问题中描述的代码可能类似于:
New:
la $a0, prompt2 # Print string "Input: "
li $v0,4
syscall
li $v0,5 #Read int x
syscall
# The result of syscall 5 is in $v0
jr $ra
Add:
jal New
add $s1, $s1, $v0 # add the value we just read to $s1
j loop