程序集从控制台运行文本读取程序

时间:2013-06-13 13:52:15

标签: io mips

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

1 个答案:

答案 0 :(得分:1)

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

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

.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包含文本'This is a test!'):

cat fileName.txt | java -jar Mars4_3.jar programName.asm
Text: This is a test!