Я не эксперт в MIPS, извините. Мне нужно импортировать целочисленное значение от 0 до 5 (0 ‹ n ‹ 5). Например, если значение n > 4, у меня появляется сообщение об ошибке errorDimensionMessage
, и моя программа перезапускает функцию jal dimension
до тех пор, пока не будет введено правильное значение. После этого, если я ввожу правильное значение (например, 3), программа переходит в jal exit
для выхода.
(код обновлен)
Проблема в том, что после 5 (ошибка) -> 3 (ОК) программа сбрасывается снизу.
.data
InsertDimension: .asciiz " Insert an integer (n) with value between 0 and 5 (0 < n < 5): "
errorDimensionMessage: .asciiz " Error. Matrix dimension is not valid (e.g., 0 < n < 5)\n"
messageExit: .asciiz " Exit...\n"
.text
.globl main
main:
jal dimension
jal exit
exit:
la $a0, messageExit
li $v0, 4 # print string
syscall
li $v0, 10 # loads the service that exits
syscall
dimension:
move $s0, $ra # save return address into s0
la $a0, InsertDimension
li $v0, 4 # print string
syscall
li $v0, 5 # read an integer from console and put it in $v0!
syscall
jal isValidDimension
move $ra, $s0 #restore return address that was saved into s0
jr $ra #return
isValidDimension:
move $s1, $s0 # save return address into s0
beqz $v0, errorDimension
bgt $v0, 4, errorDimension
move $s0, $s1 # save return address into s0
jr $ra #return
errorDimension:
la $a0, errorDimensionMessage
li $v0, 4 # print string
syscall
j dimension # return to dimension