Я пытаюсь найти минимальное значение и сумму массива в MIPS
. Я не могу понять, что я делаю неправильно, что он выдает неправильную сумму, и он даже не анализирует и не возвращает минимальное значение массива.Поиск минимального значения в массиве с помощью MIPS
Мне разрешено использовать только две инструкции по разделению, bne
и beq
, но любая другая инструкция - честная игра.
# local variable register
# int sum $s0
# int min $s1 (To be used when students enhance the program.)
# int *p $s2
# int *past_last $s3
#
.text
.globl main
main:
la $s2, arr # p = arr
addi $s3, $s2, 24 # past_last = p + 6
lw $s0, ($s2) # sum = *p
while:
addi $s2, $s2, 4 # p++
beq $s2, $s3, endwhile # if (p == past_last) goto L2
lw $t0, ($s2) # $t0 = *p
lw $t1, -4($s2) # $t1 = *(p--)
slt $t2, $t1, $t0 # $t2 = 1 if (*p < *(p--)) else $t2 = 0
bne $t2, $zero, minimum # if ($t2 != 0) goto minimum
add $s0, $s0, $t0 # sum += $t0
j while
minimum:
lw $s1, ($t1) # min = $t1
j while
endwhile:
спасибо! – user2880990