2010-11-10 43 views
3

我正在嘗試編寫一個程序,該程序從.dat文件中讀取與LED模擬器中顯示的不同顏色對應的字符; x = off,R = red等。我的問題是,我無法弄清楚我在打開.dat文件時做了什麼錯誤。我環顧四周,嘗試了所有我能想到的,但每次組裝並運行時,我都會在$ v0中得到-1表示錯誤。這裏是我的開/讀碼/關閉文件:用MIPS彙編閱讀文件

.data 
fin: .asciiz "maze1.dat"  # filename for input 
buffer: .asciiz "" 

.text 
#open a file for writing 
li $v0, 13  # system call for open file 
la $a0, fin  # board file name 
li $a1, 0  # Open for reading 
li $a2, 0 
syscall   # open a file (file descriptor returned in $v0) 
move $s6, $v0  # save the file descriptor 

#read from file 
li $v0, 14  # system call for read from file 
move $a0, $s6  # file descriptor 
la $a1, buffer # address of buffer to which to read 
li $a2, 1024  # hardcoded buffer length 
syscall   # read from file 

# Close the file 
li $v0, 16  # system call for close file 
move $a0, $s6  # file descriptor to close 
syscall   # close file 

文件maze1.dat是在同一目錄MIPS計劃。任何幫助或建議非常感謝。

回答

3

唯一的問題是你的緩衝區只是一個空字符串,它只保留一個字節(空字節)。你應該改用buffer: .space 1024或者你需要的很多字節。其他一切似乎都很好。

如果您在打開文件時遇到問題,請確保擴展名完全正確。但我的測試只是一個.dat文件和一些隨機文本文件。

0

確保您從文件所在的目錄運行MARS。只需將MARS .jar移動到包含「maze1.dat」的目錄並從那裏運行即可。

0

我有同樣的問題。特別是如果您使用的是Linux,請嘗試使用「./maze1.dat」。