2015-06-16 2 views
0

Мне нужно найти минимум массива чисел, хранящихся в $ 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

Каково значение '$ 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 дает ответ для меня. Если у вас все еще есть проблемы, укажите полный код. Я прочитаю его и скажу вашу ошибку.