在汇编中,有没有办法将用户的输入作为字符串存储到 .asciiz 而不是 .word 中?
我知道 sw 和 lw 但如何使用 .asciiz 来做到这一点?
谢谢
更新:
我不得不删除我的代码片段,因为它是一个完整的作业程序。
如您所见,这是我正在尝试制作的应用程序,当程序从存储在userInput
我无法执行选项中的用户读取文件名时processImage
,但我使用myInput2
的文件名已经具有我想要读取的图像文件的名称,processImage
会工作得很好。
sw
并且lw
是运行时指令,.asciiz
而是编译时汇编程序指令。如果需要,您可以使用.asciiz
为用户输入分配空间,但您仍然需要在运行时填充它,例如通过在循环中读取字符并使用sb
或使用read string
或类似的系统调用(如果有的话)存储它们。
这.asciiz
只是语法糖,使存储字符串更容易,它相当于指定一堆字节,只是您不必手动找出值。
.asciiz "a"
是一样的.byte 97, 0
。
更新
li $a1, 6 # length
la $a0, str1 # buffer
li $v0, 8 # read string call number
syscall
.data
str1: .byte 0, 0, 0, 0, 0, 0
str2: .word 0, 0, 0
str3: .space 6
.comm str4, 6
str5: .asciiz "12345"
上面的str1
通过str5
都是等价的,str5
只是没有初始化为全零。你可以使用其中的任何一个就la $a0
行了。