我有下面的程序,它读取一个字符并打印出来:
.macro print_char
li $v0, 11
lbu $a0, ($s0)
syscall
.end_macro
.macro read_char
li $v0, 12
syscall
sb $v0, ($s0)
.end_macro
.text
# Initialize registers.
li $s0, 0x10010000
li $t0, 0x0
read_char
print_char
它在MARS MIPS IDE中工作,我可以按Enter
键,模拟器将打印一个换行符。但是当我尝试使用MARS MIPS CLI做同样的事情时,它返回invalid char input (syscall 12)
错误。为什么会这样?
1条答案
按热度按时间hm2xizp91#
下面的代码包含一个异常处理程序,它处理syscall#12错误输入的异常,然后将0xc更改为0xd;前进异常pc(epc)并恢复用户代码:
请注意,这个处理程序绝对没有错误检查-特别是,它假设调用它的唯一原因是处理syscall#12错误。