如何从主程序转到子程序并使用jal指令运行计算

时间:2014-02-21 03:45:37

标签: loops assembly console integer mips

我正在开发MIPS程序集中需要执行以下操作的程序:

1。)从控制台读取用户输入的一系列整数。

2。)有效条目介于10和99之间(含)。

3.如果条目无效,则拒绝该条目并在屏幕上显示错误消息。

4。)输入-1时,读取停止。

5.输入-1后,程序会显示条目数,条目总数和条目的整数平均值。

我创建了一个主程序和子程序模板here。如您所见,在 main 中,我已经为我的五个子程序设置了子程序调用,您可以在 main 之后看到它们。我使用 jal 跳转到指定的子程序,在那里进行计算。

我至少使用部分并使用 jal

我还没有运行程序,因为很明显我在子程序中没有任何代码可以执行计算来完成五个指定的要求。顺便说一句,我使用QtSpim作为我的模拟器。

非常感谢任何帮助和意见。

1 个答案:

答案 0 :(得分:1)

跳转 al 将返回的IP地址保存在$ ra中。所以在您的子程序中,您可以通过跳回$ ra返回,如下所示:

    ...
    jal sub_routine
    ...      # <- jr $ra returns here

sub_routine:
    ... # do some work
    jr $ra

如果你需要调用另一个子程序,你必须先将$ ra保存在堆栈上,然后再调用jal。

$ ra是最后一个注册,所以31美元。

资料来源:http://math-atlas.sourceforge.net/devel/assembly/mipsabi32.pdf第3-12页