计算数组的最小值

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给我答案。如果您仍然有问题,请提供完整的代码。我会读它并告诉你的错误。