Чтение файлов с помощью сборки MIPS - PullRequest
4 голосов
/ 10 ноября 2010

Я пытаюсь написать программу, которая читает символы из файла .dat, которые соответствуют разным цветам, для отображения в симуляторе светодиодов; x = выкл, R = красный и т. д. Моя проблема в том, что я не могу понять, что я делаю неправильно, открывая файл .dat. Я осмотрелся и попробовал все, что только мог придумать, но каждый раз, когда я собираюсь и запускаюсь, я получаю -1 в $ v0, означая ошибку. Вот мой код для открытия / чтения / закрытия файла:

.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 ]

4 голосов
/ 11 ноября 2010

Единственная проблема в том, что ваш буфер - это просто пустая строка, которая резервирует только один байт (нулевой байт).Вместо этого вы должны использовать buffer: .space 1024 или столько байтов, сколько вам нужно.Все остальное кажется нормальным.

Если у вас возникли проблемы с открытием файла, убедитесь, что расширение указано правильно.Но мой тест только что сработал .dat-файл и несколько случайных текстовых файлов.

1 голос
/ 29 января 2016

У меня была такая же проблема. Особенно, если вы используете Linux, попробуйте вместо этого "./maze1.dat".

1 голос
/ 30 января 2015

Убедитесь, что вы используете MARS из того же каталога, в котором находится файл.Просто переместите MARS .jar в каталог, содержащий "maze1.dat", и запустите его оттуда.

...