MIPS - Не удается найти минимальное значение в массиве - PullRequest
0 голосов
/ 15 октября 2018

, поэтому мне было дано задание, в котором я должен найти индекс значений max и min в созданном пользователем 10-значном массиве на ассемблере MIPS.Я смог найти максимальное значение, но у меня возникли проблемы с поиском минимального значения.Я подумал, что это должно быть простое решение, когда я найду максимальное значение, но я ошибся.

Вот то, что я должен найти максимальное значение:

deleteMax:
# $s7 is the register where the address of the array is stored
# $s0 is the register where the array size is stored

# Clear out unimportant registers
addi $s1, $zero, 0
addi $t0, $zero, 0
addi $s3, $zero, 0
addi $s4, $zero, 0
addi $t6, $zero, 0
addi $t7, $zero, 0

addi $t0, $zero, 0               # Address of first element in bytes
li $t3, -1                       # Max index
li $s2, 0                        # Max value
li $t1, 0                        # Counter


loop:
sll $s1, $t1, 2
add $s1, $s1, $s7
lw $s3, 0($s1)                   # Load the first element into $s3
li $v0, 1
move $a0, $s3
syscall


slt $t2, $s3, $s2      # If $s3 < $s2, $t2 = 1, if $s3 >= $s2, $t2 = 0
bne $t2, $zero, find_max
ori $s2, $s3, 0            # Updates the maximum value
ori $t3, $t1, 0            # Updates the maximum value index

find_max:
addi $t1, $t1,1           # Increase the counter
bne $t1, $s0, loop        # if the counter hasn't reached the end, go 
                          back to the loop
j print_max

Это делает то, что я хочу: Найти максимум и его индекс.Однако, когда я пытаюсь переключить эти две строки кодов:

slt $t2, $s3, $s2      # If $s3 < $s2, $t2 = 1, if $s3 >= $s2, $t2 = 0
bne $t2, $zero, find_max

, скажем:

slt $t2, $s3, $s2      # If $s3 < $s2, $t2 = 1, if $s3 >= $s2, $t2 = 0
bne $t2, 1, find_max

Минимальное значение равно 0?

Я не уверен, почему это происходит, и не уверен, что я могу сделать для моей текущей ситуации, чтобы найти минимальное значение.

Я надеюсь, что объяснил сам, и мой код + комментарии имеютобъяснил ситуацию достаточно.Я более чем рад ответить на еще большее замешательство, которое вы, ребята, можете испытать.

...