汇编:如何在.asciiz中存储字符串?

时间:2013-11-02 12:14:20

标签: assembly mips

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

我知道sw和lw但是怎么用.asciiz?

由于

更新:

我不得不删除我的代码段,因为它是分配的完整程序。

如您所见,这是我正在尝试制作的应用程序,当程序从用户读取文件名时存储在userInput我无法执行选项processImage,但我使用{ {1}}已经有我想要阅读的图像文件的名称,myInput2可以正常使用。

1 个答案:

答案 0 :(得分:0)

swlw是运行时指令,而.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"

上述str1str5都是等效的,只是str5未初始化为全零。您可以使用la $a0行中的任何一行。