Io MIPS文件打开

Io MIPS文件打开,io,mips,Io,Mips,我试图使用MIPS Syscall 13来简单地打开一个文件,这样我就可以读入一些字符串并将它们打印到控制台,但是当我打开文件时,文件描述符一直返回-1。我检查了文件扩展名,似乎一切都正常。源代码所在的目录中有一个名为“cards.dat”的文件。这是我的密码。如果有人能帮忙,我们将不胜感激 .data filename: .asciiz "cards.dat" #file name textSpace: .space 1050 #space to store strings to be

我试图使用MIPS Syscall 13来简单地打开一个文件,这样我就可以读入一些字符串并将它们打印到控制台,但是当我打开文件时,文件描述符一直返回-1。我检查了文件扩展名,似乎一切都正常。源代码所在的目录中有一个名为“cards.dat”的文件。这是我的密码。如果有人能帮忙,我们将不胜感激

.data
filename: .asciiz "cards.dat" #file name
textSpace: .space 1050     #space to store strings to be read

.text
main:

li $v0, 13           #open a file
li $a1, 0            # file flag (read)
la $a0, filename         # load file name
add $a2, $zero, $zero    # file mode (unused)
syscall
move $a0, $v0        # load file descriptor
li $v0, 14           #read from file
la $a1, textSpace        # allocate space for the bytes loaded
li $a2, 1050         # number of bytes to be read
syscall  
la $a0, textSpace        # address of string to be printed
li $v0, 4            # print string
syscall

在使用相对路径时,必须确保工作目录是您期望的目录。也就是说,
cards.dat
需要位于程序的工作目录中。 代码似乎很好。如果您知道要打开的文件的确切位置,请尝试在
filename
中使用绝对路径

例如:

获取工作目录的另一个方法是在代码中创建一个文件,然后查看创建该文件的文件系统。。。为此,请使用服务13并将
$a1
设置为1(写入标志)


另外,在使用完文件句柄后,不要忘记使用Service16关闭文件句柄。这是你绝对应该做的最佳实践之一

如果您给MIPS一个与代码中相同的文件名。jar必须与文件位于同一目录中;不是你的源代码。

这解决了我的问题。谢谢注意双“\`”。
filename: .asciiz "c:\\files\\cards.dat" #file name