我正在尝试使用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

===============>>#1 票数:3

如果要给MIPS一个文件名,就像在代码中一样。 MIPS .jar必须与文件位于同一目录中。 不是您的源代码。

===============>>#2 票数:2

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

例如:

filename: .asciiz "c:\\files\\cards.dat" #file name

您可以尝试获取工作目录的另一件事是在代码中创建一个文件,然后查看创建该文件的文件系统...为此,请使用$a1设置为1(写标志)的服务13。

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

  ask by maxbart translate from so

未解决问题?本站智能推荐:

2回复

Mips-打印到文件

我想将一些内容(字符串和浮点数)打印到文件中。 到目前为止,这是我已经实现的: 基本思想是将必要的信息放入缓冲区,然后执行syscall。 由于文件已正确创建,随后打开和关闭,因此似乎可以正常工作。 其中也有内容,但没有预期的结果: 在第一个位置,应该有一个字符串,
1回复

MIPS:将整数数据从文件存储到数组中

我正在编写此代码来解决一个问题,即我必须从文件中读取整数并将它们存储到数组中以执行其他操作。 到目前为止,我已经能够从文件中读取并将它们存储到缓冲区中。 当我这样做时:它成功地在单独的行上显示文件的内容,这些内容是整数。 在这一点上,我不得不将这些整数存储在数组中的缓冲区中。
1回复

我无法使用MARS读取或写入文件-MIPS

我尝试使用以下代码来打开要写入的新文件,从内存缓冲区向其中写入文本,然后将其关闭。 我相信txt文件应在自动保存MARS脚本的目录中创建,但是没有文件。 $ v0不是负数,因此我认为没有发生错误。 有谁知道可能是什么问题?
3回复

使用MIPS程序集读取文件

我正在尝试编写一个程序,该程序从.dat文件读取字符,该文件对应于要在LED模拟器中显示的不同颜色; x =关闭,R =红色等等。我的问题是,我无法弄清楚打开.dat文件我做错了什么。 我环顾四周,尝试了所有我能想到的,但每次我组装和运行时,我在$ v0中得到-1表示错误。 这是我打开/读
1回复

使用Java执行并从MIPS文件(火星环境)获取输出

我有一个Java代码,该代码创建一些MIPS代码并将其放入文件中(例如output.asm)。 我想知道是否有一种方法可以执行此MIPS文件,并以我的Java代码获取控制台上打印的所有内容? 注意:我正在使用Mars 4.5
1回复

MIPS:如何将值存储到数组中

我已经对该程序进行了编码,以从用户那里获取4个值并将其存储。 但是我不知道如何将其放入“列表”(.space):
1回复

程序集mips从控制台运行文本阅读程序

我必须用mips汇编语言编写一个程序,该程序可以读取txt文件并对其中的信息进行一些处理,问题是它必须使用此类cat fileName.txt之类的命令从unix控制台运行。 java -jar Mars4_3.jar programName.asm。 猫不是打开和读取文件的命令吗? 要在
1回复

如何在MIPS的同一行中打印一个字符串和另一个字符串变量?

目前我得到的输出为 dsajnd 不是回文 而且我希望它输出,以便(例如dsajnd)和“不是回文”位于同一行。 dsajnd不是回文 我要打印的代码是
1回复

在哪里为MARS放置.txt文件

我正在使用MARS程序编写一些MIPS汇编代码,而我编写的程序需要放入一个输入文件,然后对其进行迭代以更改一些数字。 我已经编写了全部代码,但是我不确定如何实际获取文件。 我有以下代码读取输入并存储地址: 但是我实际上将文件放在Windows的什么位置以进行接收?
1回复

尝试在Linux上打开文件时,MARS MIPS Simulator冻结

我在Linux Mint上使用OpenJDK 8运行MARS 4.5,程序启动正常,我可以创建一个文件。 但是,如果我尝试保存或打开另一个文件,该程序将冻结并且必须终止该过程。 奇怪的是,它曾经工作过一次,但是在重新启动程序之后,无论何时尝试访问文件系统,它都回到冻结状态。 对于这