Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编:如何在.asciiz中存储字符串?_Assembly_Mips - Fatal编程技术网

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

Assembly 汇编:如何在.asciiz中存储字符串?,assembly,mips,Assembly,Mips,在汇编中,是否有方法将用户的输入作为字符串存储到.asciiz而不是.word中 我知道sw和lw,但如何使用。asciiz 谢谢 更新: 我不得不删除我的代码片段,因为这是一个完整的作业程序 如您所见,这是我试图制作的应用程序,当程序从存储在userInput中的用户读取文件名时,我无法执行选项processImage,但我使用的是myInput2,它已经具有我要读取的图像文件的名称,processImage可以正常工作。sw和lw是运行时指令,而.asciiz是编译时汇编程序指令。 如果需要

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

我知道sw和lw,但如何使用。asciiz

谢谢

更新:

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


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

sw
lw
是运行时指令,而
.asciiz
是编译时汇编程序指令。 如果需要,可以使用
.asciiz
为用户输入分配空间,但仍需要在运行时填充空间,例如,通过读取循环中的字符并使用
sb
或使用
read string
或类似的系统调用(如果有)存储它们

.asciiz
只是一种语法上的糖分,它使字符串更容易存储,它相当于指定一组字节,只是您不必手动计算值。
.asciiz“a”
相同。字节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
行中的任何指令。

sw
lw
是运行时指令,而
.asciiz
是编译时汇编指令。 如果需要,可以使用
.asciiz
为用户输入分配空间,但仍需要在运行时填充空间,例如,通过读取循环中的字符并使用
sb
或使用
read string
或类似的系统调用(如果有)存储它们

.asciiz
只是一种语法上的糖分,它使字符串更容易存储,它相当于指定一组字节,只是您不必手动计算值。
.asciiz“a”
相同。字节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
行中的任何选项。

请发布您已经试用过的解决方案。请再次检查,我已更新了我的答案。您需要为输入分配一些空间。我想我发现了问题,当我让用户指定图像名称时,我的代码不起作用,但是如果我已经在asciiz中定义了图像名称,它就会起作用。你能想到导致这种情况的任何问题吗?是的,我已经阅读了你的更新答案,我已经为输入名称分配了长度20。请发布一个你已经尝试过的解决方案。请再次检查,我已经更新了我的答案。你需要为输入分配一些空间。我想我发现了问题,当我让用户指定图像名称时,我的代码不起作用,但是如果我已经在asciiz中定义了图像名称,它就会起作用。你能想到导致这种情况的任何问题吗?是的,我已经阅读了你的更新答案,我已经为输入名称分配了长度20。我回家后会尝试,所以你的意思是我不能将从用户收到的字符串放入.asciiz?相反,我必须把它放进去。字节?我的问题是我想稍后加载文件名。我知道的唯一方法就是使用la$a0,文件名。但是这对.word不起作用。您也可以将它放在
.asciiz
中,
la
与标签一起工作,它不关心用于指定数据的指令(如果有)。您能再次检查我的问题吗,我已经更新了它。它有我要做的程序代码,阅读下面的几行,你就会明白我的问题。我回家后会试试这个,所以你的意思是我不能把从用户那里收到的字符串放到.asciiz?相反,我必须把它放进去。字节?我的问题是我想稍后加载文件名。我知道的唯一方法就是使用la$a0,文件名。但是这对.word不起作用。您也可以将它放在
.asciiz
中,
la
与标签一起工作,它不关心用于指定数据的指令(如果有)。您能再次检查我的问题吗,我已经更新了它。它有我正在尝试做的程序代码,阅读下面的几行,你就会理解我的问题。