Assembly MIPS赢得';t打印出缓冲区内容
我试图从输入文件中读取文本,将其存储在缓冲区中,然后打印出来。我非常确定我的代码是正确的,mars.jar文件与.s和.txt文件位于同一目录中。谁能帮我弄清楚为什么它不能打印文本 代码如下:Assembly MIPS赢得';t打印出缓冲区内容,assembly,printing,mips,system-calls,out,Assembly,Printing,Mips,System Calls,Out,我试图从输入文件中读取文本,将其存储在缓冲区中,然后打印出来。我非常确定我的代码是正确的,mars.jar文件与.s和.txt文件位于同一目录中。谁能帮我弄清楚为什么它不能打印文本 代码如下: .data buffer: .space 1024 inputFile: .asciiz "aufgabe1.txt" .text main: #open file li $v0, 13 #syscall for open file
.data
buffer: .space 1024
inputFile: .asciiz "aufgabe1.txt"
.text
main:
#open file
li $v0, 13 #syscall for open file
la $a0, inputFile #input file name
li $a1, 0 #read only
li $a2, 0 #mode is ignored
syscall
move $s0, $v0 # save the file descriptor
#read from file
li $v0, 14 #syscall for reading
move $a0, $s0 #file descriptor
la $a1, buffer #address of buff
li $a2, 1024 #buff length
syscall
#print buffer to check
li $v0, 4 #
la $a0, buffer # buffer contains the values
syscall # print int
#end program
li $v0, 10
syscall
对我有用。检查每个系统调用的返回值。我在qtspim的控制台和MARS窗口中都没有看到。。我试图打印出来的缓冲区中存储的值可能你的文本文件包含一些奇怪的字符,比如开头的NUL字节。尝试创建一个包含一些文本的新文件,看看是否打印出来。就像我说的,在Windows上使用Mars 4.5对我来说效果很好。