Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何使用jal指令从主程序转到子程序并运行计算_Loops_Assembly_Console_Integer_Mips - Fatal编程技术网

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

Loops 如何使用jal指令从主程序转到子程序并运行计算,loops,assembly,console,integer,mips,Loops,Assembly,Console,Integer,Mips,我正在MIPS assembly中编写一个程序,需要执行以下操作: 1.)从控制台读取用户输入的一系列整数 2.)有效条目介于10和99之间(含10和99) 3.)如果条目无效,则拒绝该条目,并在屏幕上打印错误消息 4.)当输入-1时,读数停止 5.)输入-1后,程序显示条目数、条目数和条目数的整数平均值 我已经创建了一个主程序和子程序模板。正如你们所看到的,在main中,我为我的五个子程序设置了子程序调用,你们可以看到这些子程序就在main之后。我使用jal跳转到指定的子程序,在那里进行计算

我正在MIPS assembly中编写一个程序,需要执行以下操作:

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

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

3.)如果条目无效,则拒绝该条目,并在屏幕上打印错误消息

4.)当输入-1时,读数停止

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

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

至少我的主要部分和日航的使用都在正确的轨道上吗

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

非常感谢您的任何帮助和意见

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

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

sub_routine:
    ... # do some work
    jr $ra
。。。
日航次例行程序

... # 因此,在我的verifyUserInput\p子程序中,我提出了一些需要计算的伪代码。你可以理解我的意思。基本上,我试图实现的是,如果用户的整数输入介于10和99之间(含10和99),那么返回到子程序调用并请求另一个整数。如果用户输入的整数不在10和99之间(含10和99),则打印错误消息并要求用户重试。但是,如果用户输入'-1',程序将停止运行,并显示总条目数、所有条目数之和以及条目数的整数平均值。是的,这通常是好的。尽管您可能希望在打印错误消息之前检查数字是否为-1。此外,如果您想在子例程中执行所有这些操作,您必须在堆栈上推送$ra寄存器(如果我是正确的:mov$ra,($sp),添加$sp,-4,$sp),然后在jr$ra之前弹出它。