1

在汇编中,有没有办法将用户的输入作为字符串存储到 .asciiz 而不是 .word 中?

我知道 sw 和 lw 但如何使用 .asciiz 来做到这一点?

谢谢

更新:

我不得不删除我的代码片段,因为它是一个完整的作业程序。

如您所见,这是我正在尝试制作的应用程序,当程序从存储在userInput我无法执行选项中的用户读取文件名时processImage,但我使用myInput2的文件名已经具有我想要读取的图像文件的名称,processImage会工作得很好。

4

1 回答 1

1

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行了。

于 2013-11-02T13:39:32.113 回答