Mips汇编语言错误检查

Mips汇编语言错误检查,mips,Mips,我有一个程序,它使用syscall5从用户那里获取一个整数作为输入。当用户输入特殊字符时!@$%^ \如何修复程序以显示错误消息而不是使其崩溃,而不是使其崩溃 这是我写的代码 la $a0, prompt # prompt the message ask for the answer n li $v0, 4 syscall li $v0, 5 # input the answer syscall add $t1, $zero, $v0

我有一个程序,它使用syscall5从用户那里获取一个整数作为输入。当用户输入特殊字符时!@$%^ \如何修复程序以显示错误消息而不是使其崩溃,而不是使其崩溃

这是我写的代码

    la $a0, prompt          # prompt the message ask for the answer n
li $v0, 4
syscall

li $v0, 5           # input the answer
syscall 

add $t1, $zero, $v0

                # store the answer in $t1

blt $t1, $s0, negative      # check for number entered < $s0
bgt $t1, $s1, exceed        # check for > $s1 number

la $a0, blank           # blank line
li $v0, 4
syscall 

你无法阻止它崩溃。它将始终尝试从输入中解析整数。您可以显示错误消息并使用异常处理程序进行恢复

更新:


上面的代码实际上是一个数字猜测游戏的一部分 使用syscall选择一个随机数,用户输入他的 猜测用户有6次机会猜出正确答案

编写处理程序的另一种方法是使用read_char或read_string将用户输入读入缓冲区,然后自己执行提取。使用read_char需要您最多接受一行字符

迭代缓冲区时,确保每个字符的值介于48和57之间。请参见ASCII图表。如果值超出范围,则显示错误。否则,从48中减去该值得到该数字,将该数字乘以十的位置,然后将其添加到累计和中。我建议向后迭代缓冲区,这样计算十的位置就简单了


该算法的伪代码可以在本主题中找到。

也许有更好的方法来处理您试图执行的任何操作。你能澄清一下吗?上面的代码实际上是数字猜测游戏的一部分,程序使用syscall选择一个随机数,用户输入他的猜测。用户有6次机会猜出正确答案。这是一个介于0-100之间的数字猜测游戏。机会仍然存在:6输入你的猜测:56秘密号码高于:56机会仍然存在:5输入你的猜测:67秘密号码高于:67机会仍然存在:4输入你的猜测:75秘密号码低于:75机会仍然存在:3输入你的猜测:74秘密号码低于:74机会仍然存在:2输入你的答案猜测:72机密号码低于:72剩余的机会:1输入您的猜测:70机密号码低于:70剩余的机会:0抱歉…您输了。密码是:69是的,但我不知道如何编写异常处理程序,我的教科书也没有很好地介绍这一部分。如果你能给我一个关于如何做的简单想法,或者甚至让我参考一些有异常文档的网站,我将不胜感激。@DaffyDaffy:你看了我答案中的链接了吗?噢,对不起,我已经看过了,谢谢你会查看的!
This is a number guessing game between 0- 100. Let's begin.
Chances remains: 6
Enter your guess: 56

The secret number is higher than : 56
Chances remains: 5
Enter your guess: 67

The secret number is higher than : 67
Chances remains: 4
Enter your guess: 75

The secret number is lower than : 75
Chances remains: 3
Enter your guess: 74

The secret number is lower than : 74
Chances remains: 2
Enter your guess: 72

The secret number is lower than : 72
Chances remains: 1
Enter your guess: 70

The secret number is lower than : 70
Chances remains: 0
Sorry...You lost.
The secret number is: 69
Do you want to play again?
1.Yes 
2.No 
Choice: 2
Your average guess: 3
-- program is finished running --