我有一个问题,我想从文件中读取并逐字打印文本。当我将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