Я пишу программу сборки MIPS, которая будет принимать 5 входных данных от пользователя и сохранять их в массиве. Я хочу убедиться, что число, введенное пользователем, больше, чем предыдущее введенное число, если это не так, я хочу отобразить и сообщение об ошибке, а не сохранить номер и позволить пользователю продолжить ввод значений. Однако, когда я запускаю свой код прямо сейчас, я не получаю эту ошибку, и когда я пытаюсь добавить lw $t3, 0($t4)
перед ble $v0, $t3, ERROR
, сообщение об ошибке не отображается, и все значения принимаются. Я не знаю, есть ли другой способ сделать это, не помещая la $t4, values
в цикл, потому что тогда это начинает запоминание значений снова, поэтому мой результат неверен. Есть идеи? Я разместил свой код ниже.
.data
values: .space 24 # 6 * 4 = 24
small: .asciiz "Value too small!! Try again.\n"
.text
MAIN:
li $t0, 0 # i = 0
la $t4, values
TOP:
bge $t0, 5, BOTTOM
BODY:
li $v0, 5
syscall
ble $v0, $t3, ERROR
sw $v0, 0($t4)
add $t4, $t4, 4
add $t0, $t0, 1
b TOP
ERROR:
li $v0, 4
la $a0, small
syscall
b BODY
BOTTOM:
li $v0, 5
syscall
move $t2, $v0
li $t1, 0 # i = 0
la $t4, values
TEST:
beq $t2, $t1, PRINT
ADDITION:
add $t4, $t4, 4
add $t1, $t1, 1
b TEST
PRINT:
lw $a0, 0($t4)
li $v0, 1
syscall
EXIT:
# Terminates the Program
li $v0, 10
syscall