2013-11-02 56 views
0

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

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

感谢

UPDATE:

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

正如你看到的,这是我试图使应用程序,当程序读取存储在userInput我不能执行选项processImage用户名,但我用myInput2已具有的名字我我想读的图像文件,processImage将工作得很好。

+0

请发布您已经尝试过的解决方案。 –

+0

你能否再次检查,我已经更新了我的答案。 – Sobiaholic

+0

您需要为输入分配一些空间。看我的答案中的例子。 – Jester

回答

0

swlw是运行时指令,而.asciiz是编译时汇编指令。 如果需要,您可以使用.asciiz为用户输入分配空间,但仍需要在运行时填充空间,例如通过读取循环中的字符并使用sb或使用read string或使用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行中的任何一行。

+0

我会在我回到家时尝试这个,所以您所说的是我无法将从用户收到的字符串一个.asciiz?相反,我必须把它放进去。拜特?我的问题在于我想稍后加载文件名。我知道使用的唯一方法是la $ a0,filename。但是这不适用于.word – Sobiaholic

+0

您也可以将它放在'.asciiz'中,'la'可以与标签一起工作,它并不关心用于指定数据的指令(如果有的话)。 – Jester

+0

你能否再次检查我的问题,我已经更新了。它有我正在尝试执行的程序代码,请阅读下面的代码,您将了解我的问题。 – Sobiaholic

相关问题