MIPS接受空白输入

时间:2014-03-10 18:28:00

标签: arrays input try-catch byte mips

我在MIPS中有一个函数,它收集用户输入并将其放入一个整数数组中。如何在空白输入上崩溃?是否有某种我不知道的捕获物?

显然,必须在循环中执行一些测试,但是如果它不是整数,我怎么知道输入了什么。 $ v0寄存器中的值5确保只收集整数。

这是功能:

####################################################################################
# Gather Numbers
# The collection loop in order for the user to input numbers, all integers are
# accepted, and blank inputs.
# a0 = the base address of the array.
####################################################################################
gather_numbers:
addi $sp, $sp, -16
sw $a0, 0($sp)
sw $s0, 4($sp)
sw $s1, 8($sp)
sw $t1, 12($sp)

move $s0, $a0 #the address of the array
lw $s1, size # load the size
li $t1, 0 # so it enters the loop

start_gather_numbers: beq $t1, 9999, exit_gather_numbers
              li $v0, 5 # read the integer
              syscall
              sw $v0, 0($s0)
              move $t1, $v0 # put the value into t1 to be tested
              addi $s0, $s0, 4 #increment the address
              addi $s1, $s1, 1 # increment the size
              j start_gather_numbers
exit_gather_numbers:  addi $s1, $s1, -1 # fix the size
                  sw $s1, size # store the size
              lw $a0, 0($sp) # pop the stack
              lw $s0, 4($sp)
              lw $s1, 8($sp)
              lw $t1, 12($sp)
              addi $sp, $sp, 12
              jr $ra

1 个答案:

答案 0 :(得分:0)

我想出了如何使用异常处理程序。抛出异常时,程序会立即跳转到其他地址。您可以将自定义指令放在特定地址,以供编译器遵循。它可以帮助程序优雅地消失,或者通过纠正输入来继续。

请查看此链接http://courses.missouristate.edu/kenvollmar/mars/help/MarsExceptions.html