我无法使用 MARS 读取或写入文件 - mips
I can't read or write a file using MARS - mips
我尝试使用以下代码打开一个新文件进行写入,从内存缓冲区向其写入文本,然后关闭它。我相信应该在保存 MARS 脚本的目录中自动创建 txt 文件,但是没有文件。 $v0 不是负数,所以我认为没有发生错误。有谁知道可能是什么问题?
.data
fout: .asciiz "testout.txt" # filename for output
buffer: .asciiz "The quick brown fox jumps over the lazy dog."
.text
###############################################################
# Open (for writing) a file that does not exist
li $v0, 13 # system call for open file
la $a0, fout # output file name
li $a1, 1 # Open for writing (flags are 0: read, 1: write)
li $a2, 0 # mode is ignored
syscall # open a file (file descriptor returned in $v0)
move $s6, $v0 # save the file descriptor
###############################################################
# Write to file just opened
li $v0, 15 # system call for write to file
move $a0, $s6 # file descriptor
la $a1, buffer # address of buffer from which to write
li $a2, 44 # hardcoded buffer length
syscall # write to file
###############################################################
# Close the file
li $v0, 16 # system call for close file
move $a0, $s6 # file descriptor to close
syscall # close file
###############################################################
问题的原因在于路径:fout: .asciiz "testout.txt"
。它需要是带有双 \
而不是 \
:
的完整路径
fout:.asciiz "C:\Users\Angry\Desktop\testout.txt"
我尝试使用以下代码打开一个新文件进行写入,从内存缓冲区向其写入文本,然后关闭它。我相信应该在保存 MARS 脚本的目录中自动创建 txt 文件,但是没有文件。 $v0 不是负数,所以我认为没有发生错误。有谁知道可能是什么问题?
.data
fout: .asciiz "testout.txt" # filename for output
buffer: .asciiz "The quick brown fox jumps over the lazy dog."
.text
###############################################################
# Open (for writing) a file that does not exist
li $v0, 13 # system call for open file
la $a0, fout # output file name
li $a1, 1 # Open for writing (flags are 0: read, 1: write)
li $a2, 0 # mode is ignored
syscall # open a file (file descriptor returned in $v0)
move $s6, $v0 # save the file descriptor
###############################################################
# Write to file just opened
li $v0, 15 # system call for write to file
move $a0, $s6 # file descriptor
la $a1, buffer # address of buffer from which to write
li $a2, 44 # hardcoded buffer length
syscall # write to file
###############################################################
# Close the file
li $v0, 16 # system call for close file
move $a0, $s6 # file descriptor to close
syscall # close file
###############################################################
问题的原因在于路径:fout: .asciiz "testout.txt"
。它需要是带有双 \
而不是 \
:
fout:.asciiz "C:\Users\Angry\Desktop\testout.txt"