有人能告诉我这个MIPS程序中load immediate的目的是什么吗?

时间:2014-10-17 16:50:16

标签: assembly mips

我一直在从我的大学开始介绍MIPS教程,我们要查看代码并尝试理解每一行。

我理解load immediate函数的作用,即它将寄存器中的第二个值/值加载到第一个寄存器中。

我不明白这个程序的目的是什么。虽然删除它似乎导致程序失败。

http://www.inf.ed.ac.uk/teaching/courses/inf2c-cs/labs/hexOut.s

首先将4加载到$ v0,然后在提示用户输入后加5,然后将$ v0加到$ 0并将其存储在$ s0中,然后再将$ v0加载回4。等等。

但我无法看到这样做的任何目的。它似乎是唯一一次使用$ v0,但它们始终在改变它的价值。其次,为什么你不能简单地写" li $ s0,5"而不是将$ v0更改为5,然后执行"添加$ s0,$ 0,$ v0"命令?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

syscall是一个通用接口。您可以在调用它之前通过将约定的数字加载到$v0来具体告诉它该做什么。在此示例/目标环境中,4显然是在$a0中的地址处写出字符串的操作,而5是从用户获取输入的操作。该输出必须在某处,因为在您进行系统调用后,您不需要系统调用号码$v0是结果的好地方。