La lecture de fichiers avec MIPS de l'assemblée
Je suis en train d'écrire un programme qui lit les caractères à partir d'une .fichier dat qui correspondent à des couleurs différentes pour être affiché dans le simulateur; x = off, R = rouge, etc. Mon problème est que je ne peux pas comprendre ce que je fais mal avec l'ouverture de la .dat fichier. J'ai regardé et essayé tout ce que je peux penser, mais à chaque fois que je les assembler et de les exécuter, je reçois un -1 dans $v0, ce qui correspond à une erreur. Voici mon code pour l'ouverture/de lecture/de la fermeture du fichier:
.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 suggestions sont grandement appréciés.
OriginalL'auteur CJ McAllister | 2010-11-10
Vous devez vous connecter pour publier un commentaire.
La seule question est de tampon est simplement une chaîne vide, ce qui est seulement en réservant un octet (octet nul). Vous devez utiliser à la place
buffer: .space 1024
ou cependant le nombre d'octets que vous avez besoin. Tout le reste semble bien.Si vous rencontrez des problèmes de l'ouverture du fichier, assurez-vous que l'extension est tout à fait correct. Mais mon test juste travaillé .fichier dat et un peu aléatoire de fichiers de texte.
OriginalL'auteur Kizaru
Assurez-vous que vous êtes l'exécution de MARS depuis le même répertoire que le fichier se trouve. Il suffit de déplacer le MARS .jar dans le répertoire contenant "maze1.dat" et l'exécuter à partir de là.
OriginalL'auteur David Zaragoza
J'ai eu le même problème. Spécialement si vous utilisez Linux, essayez "./maze1.dat" à la place.
OriginalL'auteur user3625166