我正在尝试创建一个名为“exit.txt”的文件,并在其上写一些数据。我尝试过不同的标志和模式,但这似乎不起作用。这是我正在使用的代码:
str_exit: .asciiz "/home/LinuxPc/Desktop/exit.txt"
file_write:
li $v0, 13
la $a0, str_exit
li $a1, 1
la $a2, 0
syscall
有没有办法让它发挥作用? 谢谢!!
答案 0 :(得分:4)
除了gusbro的答案(在写入之前打开文件流),可能有助于为打开文件调用设置标志和模式,如下所示:
li $a1, 0x41
li $a2, 0x1FF
这将标志设置为十六进制值0x41,告诉调用首先创建文件。模式设置为十六进制值0x1FF,转换为二进制值 0000 0000 0001 1111 1111设置文件权限: (...)0 111(n)111(g)111(其他)。
答案 1 :(得分:1)
您将代码设置为以写入模式打开文件,但您没有在文件中写入任何内容。 下面是一个如何打开/写入/关闭文件的示例:
.data
str_exit: .asciiz "test.txt"
str_data: .asciiz "This is a test!"
str_data_end:
.text
file_open:
li $v0, 13
la $a0, str_exit
li $a1, 1
li $a2, 0
syscall # File descriptor gets returned in $v0
file_write:
move $a0, $v0 # Syscall 15 requieres file descriptor in $a0
li $v0, 15
la $a1, str_data
la $a2, str_data_end
la $a3, str_data
subu $a2, $a2, $a3 # computes the length of the string, this is really a constant
syscall
file_close:
li $v0, 16 # $a0 already has the file descriptor
syscall