Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 程序集MIPS:存储字符串_Assembly_Mips - Fatal编程技术网

Assembly 程序集MIPS:存储字符串

Assembly 程序集MIPS:存储字符串,assembly,mips,Assembly,Mips,我写了一些代码,从键盘上取下你的名字,然后马上打印出来 .data name: .word .text .globl main main: li $v0, 8 la $a0, name la $a1, 20 syscall move $s1, $v0 li $v0, 4 la $a0, name syscall li $v0, 10 syscall 但在我看来,有些事情似乎不

我写了一些代码,从键盘上取下你的名字,然后马上打印出来

.data  
name: .word

.text
.globl main 
main: 

li       $v0, 8 
la       $a0, name
la       $a1, 20 
syscall

move    $s1,  $v0

li       $v0, 4
la       $a0, name
syscall


li       $v0, 10       
syscall 
但在我看来,有些事情似乎不对劲,比如把名字储存在内存中,然后打印出来,这样会更流畅


这怎么可能呢?

您确实将名称存储在内存中,只是忘记为其分配空间
name:.word
应该是
name:.space 20
(或者您的汇编程序使用的任何指令)。为了澄清问题,通过数据段分配空间和使用“la$a1,20”命令为字符串分配空间是两件不同的事情,对吗?
la
不分配空间,这最终只会告诉系统,您最多要读取那么多字节,并且声明缓冲区足够大。但这是一个谎言:)这里是否需要“move$s1,$v0”命令?不,不是。根据我找到的文档,syscall8甚至不返回
$v0
中的任何内容。