MIPS:写入和读取文件

时间:2015-05-27 08:35:56

标签: mips

我正在尝试在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>

1 个答案:

答案 0 :(得分:1)

您没有看到任何输出,因为您没有打印已阅读的内容。 从文件中读取文本后,它应存储在您提供的缓冲区中(reservedspace)。 因此,您可以使用

打印该缓冲区的内容
  la $a0, reservedspace
  li  $v0, 4
  syscall