我正在尝试在MIPS中合并两个不同的程序,以便在文件上写入内容然后通过简单的菜单读取它。 写作很顺利。阅读有点问题,因为我看不到任何输出。如果与书写部分分开,则阅读部分本身起作用。 有人会因为我做错了而引起我的注意吗? 谢谢!
<pre>
.data
fout: .asciiz "test.txt"
reservedspace: .space 1024
cont: .asciiz "reading file... "
buffer: .asciiz "some text to test the program."
##################################################
.text
main:
menu:
getinput:
li $v0, 5
syscall
move $s0, $v0
beq $s0, 0, create
beq $s0, 1, read
beq $s0, 2, delete
beq $s0, 3, show
beq $s0, 4, exit
j getinput
#######################################
create:
#write on file
#open
li $v0, 13
la $a0, fout
li $a1, 1
li $a2, 0
syscall
move $s6, $v0
#write
li $v0, 15
move $a0, $s6
la $a1, buffer
li $a2, 30
syscall
#close
li $v0, 16
move $a0, $s6
syscall
j menu
search:
li $v0, 13
la $a0, fout
li $a1, 0
li $a2, 0
syscall
move $s6, $v0
li $v0, 14
move $a0, $s6
la $a1, reservedspace
li $a2, 1024
syscall
li $v0, 4
la $a0, cont
syscall
close:
li $v0, 16
move $a0, $s6
syscall
j menu
delete:
show:
exit:
li $v0, 10 #Terminate Program
syscall
<code>
答案 0 :(得分:1)
您没有看到任何输出,因为您没有打印已阅读的内容。
从文件中读取文本后,它应存储在您提供的缓冲区中(reservedspace
)。
因此,您可以使用
la $a0, reservedspace
li $v0, 4
syscall