MIPS/程序集如何在出现错误时重复输入



我这学期刚开始学习mips,很难掌握一些概念。我想做的是,让用户输入两个数字,第一个和最后一个。程序应计算这些数字之间的和(包括(,如果最后>第一个(6>3但3<6,用户先输入6,然后输入3。(程序应显示错误消息,并要求用户再次输入数字。我已经得到了它,直到我显示错误消息的部分,但似乎不知道如何再次获得输入。这是我的密码。_

.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

我发现用下面的代码替换完成的部分就可以了。如果有人需要帮助,就把这个留在这里。

done:
la   $a0,error
li  $v0,4
syscall 
j driver

相关内容

最新更新