繁体   English   中英

使用MIPS程序集读取文件

[英]Reading files with MIPS assembly

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

.data  
fin: .asciiz "maze1.dat"      # filename for input
buffer: .asciiz ""

.text
#open a file for writing
li   $v0, 13       # system call for open file
la   $a0, fin      # board file name
li   $a1, 0        # Open for reading
li   $a2, 0
syscall            # open a file (file descriptor returned in $v0)
move $s6, $v0      # save the file descriptor 

#read from file
li   $v0, 14       # system call for read from file
move $a0, $s6      # file descriptor 
la   $a1, buffer   # address of buffer to which to read
li   $a2, 1024     # hardcoded buffer length
syscall            # read from file

# Close the file 
li   $v0, 16       # system call for close file
move $a0, $s6      # file descriptor to close
syscall            # close file

文件maze1.dat与MIPS程序位于同一目录中。 非常感谢任何帮助或建议。

唯一的问题是你的缓冲区只是一个空字符串,它只保留一个字节(空字节)。 您应该使用buffer: .space 1024或您需要的多个字节。 其他一切似乎都很好。

如果您在打开文件时遇到问题,请确保扩展名完全正确。 但我的测试只是使用.dat文件和一些随机文本文件。

确保您从文件所在的同一目录运行MARS。 只需将MARS .jar移动到包含“maze1.dat”的目录,然后从那里运行它。

我有同样的问题。 特别是如果您使用的是Linux,请尝试使用“./maze1.dat”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM