Assembly 未打印MIPS缓冲区内容
解决方法:我将这两个文件都移动到了桌面上,它工作了-我想mac上的一些目录有权限问题 我正在尝试打印文本文件(test1.txt)的内容,该文件与我的MARS文件位于同一目录中,但缓冲区的内容未打印。测试文件中的字符串只包含字母,不包含空字符。我不知道怎么了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
.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)返回一个文件描述符,如果出现错误,则返回负数。