我需要找到存储在$ a2中的最小数字数组,但它只输出最后一个数字。
例如,如果我输入1,2,3,它将输出最小值为3。
有什么建议吗?这是代码部分
Minimum:
beq $t1,$t5,exit
add $a1,$a1,4
add $t1,$t1,1
lw $t0,0($a1)
bge $t0,$t2,loop
move $t2,$t0
loop:
j Minimum
exit:
li $v0,4
la $a0,min #print "Mininum= "
syscall
li $v0,1
move $a0,$t2
syscall
答案 0 :(得分:0)
这样写:
Minimum:
beq $t1,$a1,exit
add $t1,$t1,1
lw $t0,0($a2) #load next array value
add $a2,$a2,4 #doing this before would skip first element of array
bge $t0,$t2,loop
move $t2,$t0 #if minimum found
也在做:
lw $t2,0($a2) #set minimum to array[0]
move $a1,$t1 #move count to a1
错误,因为$a2
不会是array
的起始地址。在最小值之后,$a2
将位于数组的最后一个元素之后的地址。
而是写:
la $a2,array
lw $t2,0($a2) #set minimum to array[0]
move $a1,$t1 #move count to a1
修改Minimum
会给我答案。如果您仍有问题,请提供完整的代码。我会读它并告诉你的错误。