假设我想输出我插入的相同字符串,我会使用以下
main:
la $a0,buffer #allocate space for $a0
li $v0,8 #read the string input
syscall
li $v0, 4 #print the string input
syscall
li $v0,10 #stop the program
syscall
嗯,那不行,我必须添加
li $a1,..
我不知道为什么?
答案 0 :(得分:1)
请参阅MARS / spim系统调用文档here。
对于系统调用8,您需要在$a0
中指定缓冲区地址,并在$a1
中指定长度。我的猜测是上面的代码不起作用,因为程序以$a1
预设为零开始,意味着你将读取0字节。
另外,你对第一行的评论是错误的。使用la
不会分配空间。这应该在我认为已定义text
标签的buffer
段中完成。使用la
仅将标签buffer
的地址加载到寄存器中。