MIPS中的内存地址越界错误

MIPS中的内存地址越界错误,mips,Mips,我使用了下面的代码来打印hello world消息,但是当运行时,会弹出一个错误消息“内存地址超出范围”。为什么会发生这种情况 .text main: la $v0, hello_msg li $v0, 4 syscall #Data storage .data hello_msg : .asciiz "Hello World\n\n" la和li都加载到$v0。在第一种情况下,您的意思是$a0?谢谢$a0工作得非常好。为什么我们不能像加载整数那样加载文本时使用$v0呢?如果你真的

我使用了下面的代码来打印hello world消息,但是当运行时,会弹出一个错误消息“内存地址超出范围”。为什么会发生这种情况

.text

main:


la $v0, hello_msg
li $v0, 4
syscall

#Data storage

.data

hello_msg : .asciiz "Hello World\n\n"

la
li
都加载到
$v0
。在第一种情况下,您的意思是
$a0
?谢谢$a0工作得非常好。为什么我们不能像加载整数那样加载文本时使用$v0呢?如果你真的想用它做点什么的话,你可以这样做
$v0
在指向
hello\u msg
的地址后立即被覆盖为值
4
。在任何情况下,“服务4”都希望
$a0
指向要打印的文本。而
syscall
指令本身期望
$v0
指向有效的服务编号(
4
)。我将其用作参考(请注意,我对MIPS没有任何经验)。