2010-11-10 13 views
3

J'essaie d'écrire un programme qui lit les caractères d'un fichier .dat correspondant à différentes couleurs à afficher dans le simulateur de DEL; x = off, R = rouge, etc. Mon problème est, je ne peux pas comprendre ce que je fais mal avec l'ouverture du fichier .dat. J'ai regardé autour et essayé tout ce que je peux penser, mais chaque fois que je m'assemble et que je cours, je reçois un -1 en $ v0 signifiant une erreur. Voici mon code pour l'ouverture/lecture/fermeture du fichier:Lecture de fichiers avec l'assemblage 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 

Le fichier maze1.dat est dans le même répertoire que le programme MIPS. Toute aide ou suggestion est grandement appréciée.

Répondre

3

Le seul problème est que votre tampon est simplement une chaîne vide, qui ne réserve qu'un octet (octet nul). Vous devriez plutôt utiliser buffer: .space 1024 ou les nombreux octets dont vous avez besoin. Tout le reste semble bien.

Si vous avez des problèmes pour ouvrir le fichier, assurez-vous que l'extension est exactement correcte. Mais mon test a juste travaillé un fichier .dat et quelques fichiers texte aléatoires.

0

Assurez-vous que vous exécutez MARS à partir du même répertoire que le fichier. Déplacez simplement MARS .jar dans le répertoire contenant "maze1.dat" et exécutez-le à partir de là.

0

J'ai eu le même problème. Si vous utilisez Linux, essayez plutôt "./maze1.dat".