MIPS:写入和读取文件
MIPS: Write AND read a file
我试图在 MIPS 中合并两个不同的程序,以便在一个文件上写一些东西,然后通过一个简单的菜单读取它。
文笔流畅。阅读有点问题,因为我看不到任何输出。如果与写作部分分开,阅读部分本身就可以工作。
谁能告诉我我做错了什么?
.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
您没有看到任何输出,因为您没有打印已阅读的内容。
从文件中读取文本后,它应该存储在您提供的缓冲区中 (reservedspace
)。
因此,例如,您可以使用
打印该缓冲区的内容
la $a0, reservedspace
li $v0, 4
syscall
我试图在 MIPS 中合并两个不同的程序,以便在一个文件上写一些东西,然后通过一个简单的菜单读取它。
文笔流畅。阅读有点问题,因为我看不到任何输出。如果与写作部分分开,阅读部分本身就可以工作。
谁能告诉我我做错了什么?
.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
您没有看到任何输出,因为您没有打印已阅读的内容。
从文件中读取文本后,它应该存储在您提供的缓冲区中 (reservedspace
)。
因此,例如,您可以使用
la $a0, reservedspace
li $v0, 4
syscall