Assembly 未打印MIPS缓冲区内容

Assembly 未打印MIPS缓冲区内容,assembly,mips,Assembly,Mips,解决方法:我将这两个文件都移动到了桌面上,它工作了-我想mac上的一些目录有权限问题 我正在尝试打印文本文件(test1.txt)的内容,该文件与我的MARS文件位于同一目录中,但缓冲区的内容未打印。测试文件中的字符串只包含字母,不包含空字符。我不知道怎么了 .data file: .asciiz "test1.txt" # filename for input buffer: .space 128 .text #li $t0, 0 # bracket counter

解决方法:我将这两个文件都移动到了桌面上,它工作了-我想mac上的一些目录有权限问题

我正在尝试打印文本文件(test1.txt)的内容,该文件与我的MARS文件位于同一目录中,但缓冲区的内容未打印。测试文件中的字符串只包含字母,不包含空字符。我不知道怎么了

.data
file: .asciiz "test1.txt"      # filename for input
buffer: .space 128


.text
    #li $t0, 0 # bracket counter
    #la $s0, theArray #pointer the string


        li   $v0, 13          # system call for open file
    la   $a0, file       # 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


    li  $v0, 4         # system Call for PRINT STRING
    la  $a0, ($a1)      # buffer contains the values
    syscall  


    li $v0, 16
    move $a0, $s0
    syscall #closes file

    li $v0, 10
        syscall

当您在MARS调试器中执行单个步骤时,每个系统调用的返回值是多少?(查看每个syscall指令后的
$v0
)。并检查缓冲区的内存内容。什么都没有,因为它根本没有打开文件。不过我已经解决了这个问题-结果是在mac上,一些目录(比如我存储这两个文件的文档)存在权限问题,所以我将代码文件和文本文件都移动到了我的桌面上,并且成功了!每个系统调用都有一个返回值。它可能是一个特殊的值,指示一个错误,如权限被拒绝或找不到文件,这正是我建议的原因。表示syscall 13(open)返回一个文件描述符,如果出现错误,则返回负数。