Loops 如何使用jal指令从主程序转到子程序并运行计算
我正在MIPS assembly中编写一个程序,需要执行以下操作: 1.)从控制台读取用户输入的一系列整数 2.)有效条目介于10和99之间(含10和99) 3.)如果条目无效,则拒绝该条目,并在屏幕上打印错误消息 4.)当输入-1时,读数停止 5.)输入-1后,程序显示条目数、条目数和条目数的整数平均值 我已经创建了一个主程序和子程序模板。正如你们所看到的,在main中,我为我的五个子程序设置了子程序调用,你们可以看到这些子程序就在main之后。我使用jal跳转到指定的子程序,在那里进行计算 至少我的主要部分和日航的使用都在正确的轨道上吗 我还没有运行这个程序,因为很明显,我在子程序中没有任何代码可以执行计算来满足五个指定的要求。顺便说一下,我使用QtSpim作为模拟器 非常感谢您的任何帮助和意见 跳转al将返回的IP地址保存为$ra。因此,在您的子例程中,您可以跳回$ra返回,如下所示: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跳转到指定的子程序,在那里进行计算
...
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之前弹出它。