
[英]8086 Assembly interrupts for reading/writing binary to/from files?
[英]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.