7

LEDシミュレーターに表示されるさまざまな色に対応する.datファイルから文字を読み込むプログラムを作成しようとしています。x =オフ、R =赤など。私の問題は、.datファイルを開いたときに何が間違っているのか理解できないことです。私は周りを見回して考えられるすべてのことを試しましたが、アセンブルして実行するたびに、$v0に-1が表示されてエラーを示します。ファイルを開く/読み取る/閉じるための私のコードは次のとおりです。

.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プログラムと同じディレクトリにあります。ヘルプや提案は大歓迎です。

4

3 に答える 3

5

唯一の問題は、バッファが1バイト(ヌルバイト)のみを予約している空の文字列であるということです。代わりに、buffer: .space 1024または必要なバイト数を使用する必要があります。他のすべては問題ないようです。

ファイルを開くのに問題がある場合は、拡張子が正確に正しいことを確認してください。しかし、私のテストでは、.datファイルといくつかのランダムなテキストファイルが機能しました。

于 2010-11-11T00:10:53.560 に答える
2

ファイルが置かれているのと同じディレクトリからMARSを実行していることを確認してください。MARS .jarを「maze1.dat」を含むディレクトリに移動し、そこから実行するだけです。

于 2015-01-29T21:14:35.097 に答える
1

私も同じ問題を抱えていました。特にLinuxを使用している場合は、代わりに「./maze1.dat」を試してください。

于 2016-01-29T14:19:24.073 に答える