【问题标题】:Mips Assembly Language Error checkingMips 汇编语言错误检查
【发布时间】:2012-04-29 18:55:55
【问题描述】:

我有一个程序,它接受一个整数作为用户的输入(使用系统调用 5)。当用户输入特殊字符时! @ # $ % ^ _ - ) (而不是整数它崩溃了,我怎样才能修复程序以显示错误消息而不是崩溃?

这是我写的代码

    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 

样本输出:

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 --

【问题讨论】:

  • 也许有更好的方法来处理你想做的任何事情。你能澄清一下吗?
  • 上面的代码实际上是一个猜数字游戏的一部分,程序选择一个随机数(使用系统调用42),用户输入他的猜测。用户有 6 次机会猜出正确答案。
  • 这是一个介于 0-100 之间的数字猜谜游戏。剩余机会:6 输入您的猜测:56 秘密数字高于:56 剩余机会:5 输入您的猜测:67 秘密数字更高比:67 剩余机会:4 输入您的猜测:75 秘密数字低于:75 剩余机会:3 输入您的猜测:74 秘密数字低于:74 机会:2 输入您的猜测:72 秘密数字是低于:72 剩余机会:1 输入您的猜测:70 秘密号码低于:70 剩余机会:0 对不起...您输了。密码是:69

标签: mips


【解决方案1】:

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

MARS exception handling

更新:

上面的代码实际上是一个猜数字游戏的一部分,程序 选择一个随机数(使用系统调用 42),用户输入他的 猜测。用户有 6 次机会猜出正确答案。

编写处理程序的另一种方法是使用read_charread_string 将用户输入读入缓冲区并自己执行提取。使用read_char 要求您接受最多换行的字符。

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

算法的伪代码可以在这个Casting in MIPS主题中找到。

【讨论】:

  • 是的,但我不确定如何编写异常处理程序,而且我的教科书没有很好地涵盖该部分。如果你能给我一个关于如何做的简要想法,我将不胜感激,或者甚至让我参考一些有关于异常的文档的网站。
  • @DaffyDaffy:你看过我回答中的链接吗?
  • 哎呀抱歉完全看过了,谢谢检查一下!
猜你喜欢
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多