Я только начал изучать mips в этом семестре, и мне трудно понять некоторые концепции. Что я пытаюсь сделать, это попросить пользователя ввести два числа, первое и последнее. Программа должна вычислить сумму между (включительно) этими числами, и, если последний> первый (6> 3, но 3 <6, пользователь сначала вводит 6, а затем 3.), программа должна отобразить сообщение об ошибке и попросить пользователя ввести снова номера Я получил его до тех пор, пока я не выведу сообщение об ошибке, но не могу понять, как снова получить данные. Вот мой код. _ </p>
.data
error: .asciiz "Error: first must be <= last. Try again please."
new: .asciiz "\n"
tab: .asciiz "\t"
first: .asciiz "Enter two integers for first and last please: \n"
str1: .asciiz "first="
str2: .asciiz "last="
result: .asciiz "The sum = "
.text
.globl driver
driver:
la $a0,first
li $v0,4
syscall
la $a0,str1
li $v0,4
syscall
li $v0,5
syscall
move $t0,$v0
la $a0,str2
li $v0,4
syscall
li $v0,5
syscall
move $t1,$v0
ble $t1,$t0, done
move $a1,$t1
move $a0,$t0
addiu $sp, $sp, -8
sw $a0, 0($sp)
sw $a1, 4($sp)
jal f2l
lw $a0, 0($sp)
lw $a1, 4($sp)
addiu $sp, $sp, 8
move $t5,$a0
move $t6,$a1
move $t7,$v0
la $a0,new
li $v0,4
syscall
la $a0,str1
li $v0,4
syscall
move $a0,$t5
li $v0,1
syscall
la $a0,tab
li $v0,4
syscall
la $a0,str2
li $v0,4
syscall
move $a0,$t6
li $v0,1
syscall
la $a0,new
li $v0,4
syscall
la $a0,result
li $v0,4
syscall
move $a0,$t7
li $v0,1
syscall
la $a0,tab
li $v0,4
syscall
li $v0,10
syscall
done: la $a0,error
li $v0,4
syscall
li $v0,10
syscall
f2l: lw $t2,0($sp)
lw $t3,4($sp)
loop: beq $t2,$t3,exit
add $v0,$v0,$t2
addi $t2,$t2,1
j loop
exit: jr $ra