我是 MIPS 和 MARS 的新手。作为我程序的一部分,我想从用户那里读取一个字符串。
我有一个简单的代码如下
.globl test
.data 0x10010000
foo: .asciiz "Input a string"
.data 0x10020000
in: .asciiz "xyz"
.text 0x00400000
test:
li $v0, 54
add $a0, $zero, 0x1001
add $a1, $zero, 0x1002
add $a2, $zero, 3
syscall
这个想法是将一个长度最多为 3 的字符串读入内存 0x1002。运行代码会给我“0x00400010 处的运行时异常:地址超出范围 0x00001001”。
为什么会这样?我如何解决它?我怀疑我在做一些非常愚蠢的事情,但无法弄清楚。