从提示中读取文件

时间:2015-11-28 14:36:24

标签: assembly io mips mars-simulator

我有一个问题,我想从文件中读取并逐字打印文本。当我将FILENAME声明为“testtext.txt”(我实际拥有的文件)时,程序运行正常。但在这种情况下,当我尝试输入文件名并将其保存到FILENAME地址时,程序无效。描述符为-1,它停止工作。我在这里做错了什么?你能告诉我这里的错误吗?

   .data
    FILENAME:   .ascii ""
    CHARBUFFER: .byte  0,0
    DELIMITERS: .byte  32,44,46
    string: .space 1024
    .text
                j main

    read_delimit:

    li $v0 13
    move $a0 $s1
    li $a1 0
    li $a2 0
    syscall
    move $s2 $v0
    blt $s2 0 err

li $v0 14
move $a0 $s2
la $a1 CHARBUFFER
li $a2 1024
syscall
move $s3 $v0

loop:

    lb $t5 0($a1)
    beq $t5 $t0 space
    beq $t5 $t1 comma
    beq $t5 $t2 end

    li $v0 11
    move $a0 $t5
    syscall

    addi $a1 $a1 1

    j loop

space:

    li $v0 11
    move $a0 $t6
    syscall

    addi $a1 $a1 1
    j loop

comma:
    li $v0 11
    move $a0 $t5
    syscall

    li $v0 11
    move $a0 $t6
    syscall

    addi $a1 $a1 1
    addi $a1 $a1 1
    j loop

end:
    li $v0 0
            jr $ra
err:
    li $v0 -1 
    jr $ra


main:                     
    la $s0 DELIMITERS
    lbu $t0 0($s0)          #space
    lbu $t1 1($s0)          #coma
    lbu $t2 2($s0)          #full stop

li      $v0, 8
    la      $a0, FILENAME
    li      $a1, 64
    syscall

    li $v0 4
    la $a0 FILENAME
    syscall

    la $s1 FILENAME

li $t6 012          #new_line

jal read_delimit

0 个答案:

没有答案