在汇编中,有没有办法将用户输入的字符串存储为.asciiz而不是.word?
我知道sw和lw但是怎么用.asciiz?
由于
更新:
我不得不删除我的代码段,因为它是分配的完整程序。
如您所见,这是我正在尝试制作的应用程序,当程序从用户读取文件名时存储在userInput
我无法执行选项processImage
,但我使用{ {1}}已经有我想要阅读的图像文件的名称,myInput2
可以正常使用。
答案 0 :(得分:0)
sw
和lw
是运行时指令,而.asciiz
是编译时汇编程序指令。
如果需要,可以使用.asciiz
为用户输入分配空间,但仍需要在运行时填充它,例如通过读取循环中的字符并使用sb
或使用{{read string
来存储它们。 1}}或类似的系统调用,如果你有一个。
.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
行中的任何一行。