2015-06-16 75 views
0

我需要找到存儲在$ a2中的一組數字的最小值,但它只輸出最後一個數字。計算數組的最小數

例如,若設爲i輸入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

開始時,「$ a1」或「$ t1」的值是多少?你可以給你的整個代碼? –

回答

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給出的回答我。如果您仍有問題,請填寫完整的代碼。我會讀它並告訴你的錯誤。