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

时间:2016-04-24 21:04:35

标签: arrays assembly

我是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 :(得分:0)

要打印一个整数,您需要$v0为1且$a0等于您要打印的整数。所以指向已保存该值的寄存器。

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

$ s1的相同过程。

结束该计划:

li $v0 10 syscall

您可能希望使其更加明显,因此请在它们之间打印空格或标签。 Link进行了一些系统调用