2015-05-27 165 views
0

我試圖在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

您沒有看到任何輸出,因爲您沒有打印您讀過的內容。 從文件中讀取文本後,應將其存儲在您提供的緩衝區中(reservedspace)。 因此,你可以打印該緩衝區的內容

la $a0, reservedspace 
    li $v0, 4 
    syscall 
+0

哦謝謝!那太容易了......所以,如果我可以通過這個保留空間「閱讀」,我也可以做一些搜索,比如搜索一個特定的單詞嗎? – Cristian4001

+0

當然可以。如果您要按字節搜索,只需考慮體系結構的字節順序。我建議你調試你的代碼來檢查讀入緩衝區的內容是如何存儲在內存中的。 – gusbro

+0

謝謝!我會記下來。終於有一些光... – Cristian4001