Привет, у меня есть эта программа, которая должна находить суммы, мин и макс из списка чисел, введенных пользователем.Он работает нормально, пока я не вызову функцию blt или bgt. В этот момент qtspim окрашивает группу регистров в красный цвет.После тестирования на ошибки я решил, что это потому, что я изменил значение регистра, поэтому я добавил пространство стека, но он все еще делает то же самое, и я пытался что-то вечно, и ничего не получалось.Извините, я новичок, вот мой код
.data
intro: .asciiz "Enter integer values, one perline, terminated by a negative value.\n"
total: .asciiz "\nSum: "
minn: .asciiz "\nMin: "
maxx: .asciiz "\nMax: "
mean: .asciiz "\nMean: "
.align 2
ARRAY: .space 400
.align 2
.text
.globl main
####################################
#$s1 = input counter
#$s2 = array address
#$t1 = min
#$t2 = max
#$s6 = sum
##########################################
main:
la $s2, ARRAY #array address
li $s6, 0 #sum
lui $t1, 0x7fff #min
ori $s3, $s3, 0xffff
li $t2, 0 #max
li $v0, 4 #ask user for numbers
la $a0, intro
syscall
LOOP:
li $v0, 5 #collect user input
syscall
move $s0, $v0
blt $s0, $zero, DONE
addiu $s1, $s1, 1 #add to counter
sw $s0, 0($s2) #store number in array
addiu $s2, $s2, 4 #get next array space
add $s6, $s6, $s0 #adding total sum
blt $s0, $t1, min
bgt $s0, $t2, max
j LOOP
DONE:
li $v0, 4 #show sum
la $a0, total
syscall
li $v0, 1
move $a0, $s6
syscall
li $v0, 4 #show min
la $a0, minn
syscall
li $v0, 1
move $a0, $t1
syscall
jr $ra
min: addi $sp, $sp, -4
sw $t1, 0($sp)
move $t1, $s0
lw $t1, 0($sp)
addi $sp, $sp, 4
jr $ra
max: addi $sp, $sp, -4
sw $t2, 0($sp)
move $t2, $s0
lw $t2, 0($sp)
addi $sp, $sp, 4
jr $ra