【问题标题】:Read file character by character using MIPS in MARS IDE在 MARS IDE 中使用 MIPS 逐字符读取文件
【发布时间】:2015-12-02 21:50:20
【问题描述】:

如何在不硬编码 $t0 的值的情况下循环直到文件结尾

        addi $t0, $t0,1000

loop:   beq $t0, $0, loopend
        #this code reads in a character from the file
        jal readchar


#print the character to the console
        li $v0,11
        move $a0,$t1
        syscall

        addi $t0,$t0,-1
        j loop
loopend:

readchar:   li $v0,14
            move $a0,$s6
            la $a1,inchar
            li $a2,1
            syscall
            lb $t1,inchar
            jr $ra

因为当我使用 $a2 时它不起作用,但这里显示 http://courses.missouristate.edu/kenvollmar/mars/help/syscallhelp.html

那个 从文件中读取

li $v0,14
$a0 = 文件描述符

$a1 = 输入缓冲区的地址

$a2 = 要读取的最大字符数 $v0 包含的字符数

当我用它代替硬编码时 ($ addi $t0, $t0,1000) $a2 仍然是 0

li $v0,14
move $t0,$a2
sycall

谢谢!

【问题讨论】:

    标签: assembly mips mars-simulator


    【解决方案1】:

    我不确定将$a2 移动到$t0 之前系统调用的目的是什么。 $a2 是系统调用的一个参数,您可以在其中指定要读取的最大字符数。返回值——即实际读取的字符数——仅在系统调用之后可用,并且将在寄存器$v0中。

    因此,如果您在系统调用之前将 1 放入 $a2 并且在系统调用之后将 $v0 包含零,那么您可能已经到达文件末尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多