我是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中。打印到屏幕的最小和最大
谢谢您的帮助!
最佳答案
要打印一个整数,您需要将$v0
设置为1,将$a0
等于要打印的整数,因此指向已保存该值的寄存器。li $v0 1 la $a0 ($s0) syscall
$ s1的相同过程。
结束程序:li $v0 10 syscall
您可能希望使其更加可见,因此请在它们之间打印一个空格或制表符。 Link与一些系统调用