[NASM-Linux] Problème de buffer

yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008 - 5 janv. 2008 à 00:02
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008 - 13 janv. 2008 à 10:06
Bonjour à tous, je me suis lancé dans l'assembleur 32bits avec les appels linux et j'ai un problème.

Je récupére le chemin d'un fichier entrer par l'user avec read dans un buffer et je n'arrive pas à ouvrire le fichier avec le buffer

voici le code qui pose probleme :

BITS 32
 
     SECTION .data
        bufsiz      dd 1024 ; taille du buffer

    SECTION .bss
        buf    resb 1024
       
     SECTION .text
         GLOBAL _start
        
         _start:
 
        mov eax, 3 ; Fonction READ
        mov ebx, 0 ;
        mov ecx, buf ; stoke dans buf
        mov edx, bufsiz
        int 0x80
       
        mov eax, 5 ; Fonction OPEN
        mov ebx, buf ; Chemin   
        mov ecx, 10 ; Flag
        mov edx, 0 ; Mode
        int 0x80

Il n'y a pas d'erreur d'assemblage mais le fichier n'est pas ouvert.

Avez vous une idée ?
       

3 réponses

_dune2_ Messages postés 141 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 20 avril 2011
7 janv. 2008 à 10:55
Salut,

Dans le fichier /usr/include/bits/fcntl.h :

#define O_ACCMODE          0003
#define O_RDONLY             00
#define O_WRONLY             01
#define O_RDWR               02
#define O_CREAT            0100 /* not fcntl */
#define O_EXCL             0200 /* not fcntl */
#define O_NOCTTY           0400 /* not fcntl */
#define O_TRUNC           01000 /* not fcntl */
#define O_APPEND          02000
#define O_NONBLOCK        04000
#define O_NDELAY        O_NONBLOCK
#define O_SYNC           010000
#define O_FSYNC          O_SYNC
#define O_ASYNC          020000

ton paramètre flag à la fonction open est : 10, soit "00001010" donc 010 + 002 en octal,
or 010 ne correspond à aucune option ....
Ensuite, y-a-t-il un code d'erreur de retour ??
Si tu exécutes pas-à-pas ton appli avec gdb, peux-tu confirmer que ton "buf" contient bien
le nom du fichier que tu as entré ?

Dune2

Gentoo... que du bonheur ...
0
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008
7 janv. 2008 à 15:15
J'ai essayer de remplacer la fonction ouverture fichier par écriture dans console et le buffer contient bien mon fichier : test.txt

Si cela vient du flag d'ouverture je vais le modifier ce soir et je retesterai

Yann
0
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008
13 janv. 2008 à 10:06
Non sa ne vient pas du flag, j'ai essayer d'ouvrire le fichier avec ce morceau :

section .data
fichier    dd "test.txt",0

et cela marche à la perfection donc je pense qu'il doit y'avoir une manipulation sur le buffer avant de l'utiliser mais laquel ?
0
Rejoignez-nous