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
中的任何内容。