在MIPS中,如何使用syscall 14读取长文件?

在MIPS中,如何使用syscall 14读取长文件?,mips,Mips,我目前正在进行一个项目(使用MARS),需要使用syscall 14读取多行文件。我为系统调用使用了一个80字节长的设置缓冲区长度。我在一个_readLine函数中设置了我的循环,以便在每次迭代时将缓冲区的内容打印到控制台。这就是我如何认识到我的循环只读取文件的第一个80-字节,而不读取更多 我一直在搜索互联网,试图找到一个提示,说明为什么我无法读取文件的下一个80-字节。我认为它可能与文件描述符有关,但当我尝试递增它时,没有任何变化,它仍然只输出文件的第一个80-字节,使用syscall 14

我目前正在进行一个项目(使用
MARS
),需要使用
syscall 14
读取多行文件。我为系统调用使用了一个80字节长的设置缓冲区长度。我在一个_readLine函数中设置了我的循环,以便在每次迭代时将缓冲区的内容打印到控制台。这就是我如何认识到我的循环只读取文件的第一个
80
-字节,而不读取更多

我一直在搜索互联网,试图找到一个提示,说明为什么我无法读取文件的下一个
80
-字节。我认为它可能与文件描述符有关,但当我尝试递增它时,没有任何变化,它仍然只输出文件的第一个
80
-字节,使用
syscall 14

有人能帮我找出哪里出了问题,或者告诉我如何指向我文件的下一个
80
字节吗?下面是我的代码(
fileBuff
保存用户输入文件名的地址,
\u printBuffer
是我稍后在程序中使用的函数,但您可以忽略)


Syscall 14读取连续字符串

当您告诉它读取80字节时,它将读取80字节。 当您再次调用它时(不关闭它),它将读取接下来的80个字节,依此类推

因此,我建议您移动这段代码:

addi $v0, $zero, 16  # syscall to close the file
add  $a0, $zero, $s6 # file descriptor to close
syscall              # close the file
在系统退出调用之前进入主块

addi $v0, $zero, 16  # syscall to close the file
add  $a0, $zero, $s6 # file descriptor to close
syscall              # close the file