使用Mips Assembly从txt文件读取和打印内容
问题描述:
我试图读取和打印.txt文件中的内容。
后来我想从mips读取倾销文件。
我看到代码,它似乎不错,但没有什么是outputed ...使用Mips Assembly从txt文件读取和打印内容
.data
myFile: .asciiz "teste.txt" # filename for input
buffer: .space 1024
.text
# Open file for reading
li $v0, 13 # system call for open file
la $a0, myFile # input file name
li $a1, 0 # flag for reading
li $a2, 0 # mode is ignored
syscall # open a file
move $s0, $v0 # save the file descriptor
# reading from file just opened
li $v0, 14 # system call for reading from file
move $a0, $s0 # file descriptor
la $a1, buffer # address of buffer from which to read
li $a2, 11 # hardcoded buffer length
syscall # read from file
# Printing File Content
li $v0, 4 # system Call for PRINT STRING
la $a0, buffer # buffer contains the values
syscall # print int
li $v0, 10 # Finish the Program
syscall
答
问题是关于我的文件path
。
我认为路径将从源代码开始,但它从.jar
文件开始。
我不得不这样做的是提供双\\
一个FULLPATH
.data
myFile: .asciiz "c:\\Users\\johnDoe\\Documents\\Assembly\\test.txt" # filename for input
单步执行代码在调试器。检查系统调用返回值(在调试器中)是否有错误。或者更好的是,跟踪系统调用。 IDS,如果MARS或SPIM有,但Linux确实('strace')。当然,Linux使用与MARS或SPIM不同的系统调用。 –
无论如何,如果在各个点包含来自调试器的寄存器值,这将会更好[mcve]。 –
感谢您的帮助。但我不知道如何在这里贬低我的代码,使F3 + F7,F7,F7 ...... 变为另外一种方式,还有办法确保文件被正确读取吗?因为即使我将文件名更改为无效的文件名也没有显示错误/警告...... – PlayHardGoPro