【问题标题】:Finding the largest element in an array in MIPS在 MIPS 中查找数组中的最大元素
【发布时间】:2021-10-06 16:52:59
【问题描述】:

我应该编写一个 MIPS 程序,它首先接受一个输入数字,然后请求那么多整数并将它们存储在一个数组中。之后,它反向打印数组,然后打印最大的元素。诀窍是我只被允许使用两个循环。我使用第一个循环来构建数组,下一个循环用于反向打印数组,同时检查最大的 int。我目前拥有的代码完美地满足了前两个要求,

它将接受如下输入:

5

0

1

3

2

5

然后,它会打印:

反向数组为:5,2,3,1,0

谢谢你,祝你有美好的一天!

我还没有在第二个循环中计算最大 int 的部分编码。如果不弄乱我已经为反向打印数组所做的工作,我根本无法弄清楚如何在 MIPS 中执行此操作。

真正想要的输出是:

反向数组为:5,2,3,1,0

最大元素为:5

谢谢你,祝你有美好的一天!

这是我到目前为止的代码: mipsCode

任何关于如何做到这一点的示例,无论是否使用我的代码,都将不胜感激。谢谢!

【问题讨论】:

  • 将实际代码放在您的问题中,而不是截图。
  • 你知道这段代码是如何工作的吗? “我目前拥有的代码完美地满足了前两个要求”——当人们这样说时,我听到的是:“我在互联网上找到了这段代码,我不知道它的作用或工作原理,但是不符合我的要求,请问各位陌生人可以修改吗?";我们会说,谢谢,但我们不在这里这样做。这是一个问答网站,所以问一个关于你为什么被卡住的问题,你需要学习什么才能自己“完成”这个问题,仅供参考,请帮助我,这里是我的作业要求不是问题!

标签: assembly mips


【解决方案1】:
  1. 分配一个整数变量并将其设置为零,称为 max_value。
  2. 在反向打印列表时,将每个值与 max_value 进行比较
  3. 如果 > max_value,则将其存储在 max_value 中

当所有整数都被打印出来后,max_value 将包含你找到的最大值。

CMP 将进行比较,如果 A > B 将设置进位标志,因此您可以在进位设置/清除时进行分支以跳过替换代码。

【讨论】:

  • MIPS 没有cmp 指令或进位标志。
  • ble/bge 在一条指令中进行比较和分支。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 2021-06-20
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
相关资源
最近更新 更多