如何在Mips中打印出数组的最大值和最小值

3

我刚接触MIPS,想要打印一个包含8个元素的数组的最大值和最小值。我看到了类似于我问题的答案,但那是通过调用readArray函数完成的,而我想不用它来完成。这就是我目前做到的程度。我只想知道我现在的代码是否正确,如何结束循环。例如,我应该写什么来打印正确的值。

.data
  X: .word 1, 2, 3, 4, 5, 6, 7, 8

globl main  
.text

main:
  la $t0, X
  lw $s0, 0($t0) #Sets Max to first value in array
  move $s1, $s0  #Sets Min to first value in array
  addi $t1, $0, 0 #Sets the counter to 0
  li $t1, 0     #Index for the array

loop: 
  bge $t0, 8 EndLoop
  bgt X($t1), $s0, SetMax
  blt X($t1), $s1, SetMin
  addi $t1, $t1, 4 #Increases the index for the array
  addi $t0, $t0, 1 #Increments the counter
SetMax:
  move $s0, X($t1)
  j loop
SetMin: 
  move $s0, X($t1)
  j loop
EndLoop:
  li $v0, 1
  addi $s0, $s0, 0
  addi $si, $s1, 0
  syscall

我做错了什么吗?以下是原问题: 编写MIPS代码搜索数组X[8]中的最小值和最大值。将最大值存储在寄存器$s0中,将最小值存储在$s1中。将最大值和最小值打印到屏幕上。 谢谢您的帮助!

1个回答

0

要打印一个整数,你需要将$v0设置为1,并将$a0设置为你想要打印的整数。所以指向你保存值的寄存器。

li $v0 1 la $a0 ($s0) syscall

对于$s1也是同样的过程。

结束程序:

li $v0 10 syscall

你可能想让它更加可见,所以在它们之间打印一个空格或制表符。链接带有一些系统调用。


谢谢你在如何结束循环方面的帮助。现在,语法或其他方面有什么问题吗?我只是想知道你的想法,或者是否发现代码有什么问题。 - JX30
如果你得到了想要的结果,那么一切都很好,你只需要删除末尾的两个addi即可。你不需要它们。 - Segmentation

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接