计算数组的最小值
calculate minimum of array
我需要找到 $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
这样写:
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
给我答案。如果您仍然有问题,请提供完整的代码。我会读它并告诉你的错误。
我需要找到 $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
这样写:
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
给我答案。如果您仍然有问题,请提供完整的代码。我会读它并告诉你的错误。