Assembly MIPS赢得';t打印出缓冲区内容

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

我试图从输入文件中读取文本,将其存储在缓冲区中,然后打印出来。我非常确定我的代码是正确的,mars.jar文件与.s和.txt文件位于同一目录中。谁能帮我弄清楚为什么它不能打印文本

代码如下:

.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对我来说效果很好。