计算最小数组

时间:2015-06-16 01:20:51

标签: arrays mips 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

1 个答案:

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

相关问题