[LMI] td7, exercice 4

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LMI] td7, exercice 4

Message  jabberwok le Dim 08 Mai 2011, 14:14

Bonjour/Bonsoir,

J'ai un problème avec l'exercice 4, voilà mon code :
Code:
;ex4.asm

;=======================================================================
; Concaténation de 2 fichiers.
;      Appels Systèmes :
;            -Read
;            -Open
;
;=======================================================================

global main

;=======================================================================
section .data


aEcrire    db   '',10
erreur1      db   'Erreur fichier 1',10 ;16bytes
erreur2      db   'Erreur fichier 2',10 ;16 bytes
fichier1   db   'texte1',0
fichier2   db   'texte2',0


section .bss

size      resb   4
des1      resb   4
des2      resb    4

;======================================================================

section .text

main :
   ;ouverture fichier1 en écriture
   mov eax, 5
   mov ebx, fichier1
   mov ecx, 02000 ; Append pour ajouter à la fin !
   int 0x80
   
   ;Verif + sauvegarde
   cmp eax, -1
   je _erreur1
   
   mov [des1], eax

   ;ouverture fichier2 en lecture
   mov eax, 5
   mov ebx, fichier2
   mov ecx, 00
   int 0x80
   
   ;Vérif + sauvegarde
   cmp eax, -1
   je _erreur2
   
   mov [des2], eax

   
   ;sauvegarde du contenu du fichier 2 dans une chaine.
   mov eax, 3
   mov ebx, [des2]
   mov ecx, aEcrire
   mov edx, 200    ;j'ai pris 200 au hasard.
   int 0x80

   mov [size], eax ; récupération du nombre d'octets lus.

   ;Ecriture dans fichier1.
   mov eax, 4
   mov ebx, [des1]
   mov ecx, aEcrire
   mov edx, [size]
   int 0x80

   ;Fermeture fichier1
   mov eax,  6
   mov ebx, [des1]
   int 0x80

   ;Fermeture fichier2
   mov eax, 6
   mov ebx, [des2]
   int 0x80

   jmp _fin
_erreur1 :
   ;écriture de l'erreur.
   mov eax, 4
   mov ebx, 0
   mov ecx, erreur1
   mov edx, 16
   int 0x80
   jmp _fin
_erreur2 :
   ;écriture de l'erreur.
   mov eax, 4
   mov ebx, 0
   mov ecx, erreur2
   mov edx, 16
   int 0x80
_fin :

   ;Happy End
   mov eax, 1
   mov ebx, 0
   int 0x80

Quand je lance : ./4 et que je regarde dans fichier1 je ne vois pas le contenu du fichier2 Mad
J'ai tout fais comme il faut pourtant Mad

jabberwok

Nombre de messages : 90
Prénom : ali
Statut : Gediplomeerd =)
Date d'inscription : 27/09/2010

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  nvs le Dim 08 Mai 2011, 14:26

comme indiqué au labo de présentation du td07 (et dans le texte du td1, section 2.2, 1er lien), nasm n'utilise pas la convention du c pour fournir des valeurs octales. ton 02000, pour autant qu'il soit correct et suffisant, doit devenir 2000q. vois déjà ce que cette modification donne...





Razz

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  jabberwok le Dim 08 Mai 2011, 14:32

fonctionne pas :'(

Je vais essayer, de lire les 2 fichiers, tout stocker dans une chaine et l'écrire dans le 1er fichier en WriteOnly, 'vais voir ce que ça donne, même si j'imagine que c'est pas la meilleur méthode à utiliser Mad

jabberwok

Nombre de messages : 90
Prénom : ali
Statut : Gediplomeerd =)
Date d'inscription : 27/09/2010

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  nvs le Dim 08 Mai 2011, 14:41

tu sors d'où que 2000q ouvre en écriture ?

sinon, si ton fichier fait plus de 200 octets, ça ne va pas le faire...






cyclops

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  jabberwok le Dim 08 Mai 2011, 14:49

nvs a écrit:tu sors d'où que 2000q ouvre en écriture ?

Je viens le lire la doc, il positionne en fin de fichier, il est ouvert en append mode, donc "en mode ajout", donc en mode écriture, non ?
The file is opened in append mode. Before each write(2), the file offset is positioned at the end of the file, as if with lseek(2)

nvs a écrit:sinon, si ton fichier fait plus de 200 octets, ça ne va pas le faire...

Comment connaître à l'avance le nombre d'octets d'un fichier ?
J'ai pris cette valeur, parce que je ne sais pas répondre à cette question ^^'


jabberwok

Nombre de messages : 90
Prénom : ali
Statut : Gediplomeerd =)
Date d'inscription : 27/09/2010

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  nvs le Dim 08 Mai 2011, 15:12

jabberwok a écrit:
nvs a écrit:tu sors d'où que 2000q ouvre en écriture ?

Je viens le lire la doc, il positionne en fin de fichier, il est ouvert en append mode, donc "en mode ajout", donc en mode écriture, non ?
The file is opened in append mode. Before each write(2), the file offset is positioned at the end of the file, as if with lseek(2)
non. si tu veux ouvrir en écriture, il faut le spécifier en plus de l'ouverture en ajout. tu pourrais ouvrir en lecture et écriture, et pas simplement en écriture, le système est incapable de le deviner.

jabberwok a écrit:
nvs a écrit:sinon, si ton fichier fait plus de 200 octets, ça ne va pas le faire...

Comment connaître à l'avance le nombre d'octets d'un fichier ?
J'ai pris cette valeur, parce que je ne sais pas répondre à cette question ^^'

et si tu lisais -- 200 octets par 200 si tu aimes -- en boucle jusqu'à la fin du fichier ?






afro

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  jabberwok le Dim 08 Mai 2011, 15:47

Ouiiiiiii, c'est vrai vous aviez dit de lire et écrire par 1 octet à la fois.

Je l'ai réécrit sans "gestion d'erreur" (qui ne fonctionnait pas) avec boucle et ça marche niquel, merci !


jabberwok

Nombre de messages : 90
Prénom : ali
Statut : Gediplomeerd =)
Date d'inscription : 27/09/2010

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  trikman le Mer 11 Mai 2011, 19:56

j ai également un probleme avec le mode apend

et je ne comprend pas bien votre phrase

non. si tu veux ouvrir en écriture, il faut le spécifier en plus de l'ouverture en ajout. tu pourrais ouvrir en lecture et écriture, et pas simplement en écriture, le système est incapable de le deviner.

on doit faire 2 ouvertures sur le meme fichier ?

1er int 0x80 : ouverture en RW
2e int 0x80 : ouverture en Append ?

ou l inverse ? en tout cas chez moi ca a pas l air de fonctionner ...

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  nvs le Mer 11 Mai 2011, 20:04

trikman a écrit:j ai également un probleme avec le mode apend

et je ne comprend pas bien votre phrase

non. si tu veux ouvrir en écriture, il faut le spécifier en plus de l'ouverture en ajout. tu pourrais ouvrir en lecture et écriture, et pas simplement en écriture, le système est incapable de le deviner.

on doit faire 2 ouvertures sur le meme fichier ?

1er int 0x80 : ouverture en RW
2e int 0x80 : ouverture en Append ?

ou l inverse ? en tout cas chez moi ca a pas l air de fonctionner ...
non, il faut combiner les modes d'ouverture à l'aide d'un ou binaire, comme je l'ai expliqué au labo...






alien

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  jabberwok le Mer 11 Mai 2011, 20:57

mov ecx, 2000q | 02
Wink

jabberwok

Nombre de messages : 90
Prénom : ali
Statut : Gediplomeerd =)
Date d'inscription : 27/09/2010

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  trikman le Mer 11 Mai 2011, 21:14

genial , ca fonctionne Very Happy Very Happy

merci pour votre aide

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: [LMI] td7, exercice 4

Message  Contenu sponsorisé Aujourd'hui à 14:45


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum