0

我必须用 mips 汇编语言编写一个程序来读取一个 txt 文件并使用其中的信息做一些工作,问题是它必须使用类似 cat fileName.txt | 的命令从 unix 控制台工作。java -jar Mars4_3.jar 程序名.asm。cat 不是打开和读取文件的命令吗?要在程序集中打开一个文件,我需要它的名称在一个带有空终止字符的字符串中,这是一个错字还是我遗漏了什么?

4

1 回答 1

1

通过使用管道 ( ),您可以将左侧命令的标准输出|映射到第二个命令的标准输入。因此,您必须使用8 从stdin读取。请注意,每次您发出系统调用 8 时,都会读取完整的一行(直到换行),因此如果您的输入多于一行,则必须一次读取一行。syscall

此示例从输入中读取一行到缓冲区,然后再次打印:

.data
msg: .asciiz "Text: "
buffer: .space 16384  # Buffer size
.text
  li $v0, 8
  la $a0, buffer
  li $a1, 16384
  syscall  # Read text from stdin

  li $v0, 4
  la $a0, msg
  syscall

  la $a0, buffer  # Print read texto from stdin
  syscall

  li $v0, 10  # exit
  syscall 

并像这样测试它(假设 fileName.txt 包含文本“这是一个测试!”):

cat fileName.txt | java -jar Mars4_3.jar programName.asm
Text: This is a test!
于 2013-06-13T16:10:40.930 回答