Итак, я пытаюсь найти максимум и минимум в массиве пользовательского ввода, однако по какой-то причине моя программа не печатает строки, загруженные по их адресу в некоторых точках, то есть строки 83-85 и строки 91-93
Вот код:
.data
array: .byte 40
output1: .asciiz "\nThe maximum value in array is: "
output2: .asciiz "\nThe minimum value in array is: "
newline: .asciiz "\n"
space: .asciiz " "
max: .word 0
min: .word 0
.text
.globl main
main:
li $t0, 0
li $t1, 0
reader:
bgt $t0, 36, printArray
li $v0, 5
syscall
move $t2, $v0
sw $t2, array($t0)
addi $t0, 4
b reader
printArray:
li $t0, 0 # reintialize counter
arrayLoop:
bgt $t0, 36, findMax
li $v0, 1
lw $a0, array($t0)
syscall
li $v0, 4
la $a0, space
syscall
add $t0, 4
b arrayLoop
findMax:
li $v0, 4
la $a0, newline
syscall
li $t0, 0 #resetting the counter
lw $t2, array($t0) #assuming index 0 to be max
add $t0, 4 #adding 4,so that t3 is at array[1]
greaterLoop:
bgt $t0, 36, findMin
lw $t3, array($t0)
bgt $t3, $t2, updateMax
add $t0, 4
b greaterLoop
updateMax:
move $t2, $t3
sw $t2, max
add $t0, 4
b greaterLoop
findMin:
li $v0, 4
la $a0, newline
syscall
li $t0, 0 #resetting the counter
lw $t2, array($t0)
add $t0, 4
smallerLoop:
bgt $t0, 36, printMinMax
lw $t3, array($t0)
blt $t3, $t2, updateMin
add $t0, 4
b smallerLoop
updateMin:
move $t2, $t3
sw $t2, min
add $t0, 4
b smallerLoop
printMinMax:
**li $v0, 4
la $a0, output1
syscall**
li $v0, 1
lw $a0, max
syscall
**li $v0, 4
la $a0, output2
syscall**
li $v0, 1
lw $a0, min
syscall
li $v0, 10
syscall
Проблема возникает в функции printMinMax, где выполняются системные вызовы для печати строк, однако строки не печатаются.Строки сохраняются в данных как output1 и output2.
Это действительно странная проблема, и я не знаю, в чем дело, поскольку также нет сообщения об ошибке.