[LMI] TD4 : Correctif?

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

[LMI] TD4 : Correctif?

Message  Kill-R* le Lun 12 Mai 2008, 10:15

Coucou,

J'aimerais savoir si il serait possible d'avoir une version de l'exercice d'évaluation correcte, qui réponds bien à toutes les attentes de l'énocé.

Parce que j'ai beaucoup de point sombre, et vu que j'ai pas trop cartonné, j'aimerais savoir comment on fait.

Je pense que tous les groupes sont passé, donc...

Si c'est un élève qui poste un fichier, un prof pourrait-il y jeter un coup d'œil? Pas que j'ai pas confiance, mais c'est pour voir si c'est exactement ce qui est demandé (car moi il faisait le palindrome, mais pas par la pile, donc voila ^^)

Merci d'avance en tout cas Smile

Kill-R*

Nombre de messages : 55
Age : 30
Prénom : Manuel
Statut : Etd 2ème Réseau
Localisation : Bruxelles
Date d'inscription : 18/09/2007

http://www.reggaetonurbano.be

Revenir en haut Aller en bas

Re: [LMI] TD4 : Correctif?

Message  Invité le Lun 12 Mai 2008, 10:31

Hum, et bien non tous les groupes ne sont pas passés ( Crying or Very sad )

Il reste encore le groupe 211 et 212 demain à 13h45.

Invité
Invité


Revenir en haut Aller en bas

Re: [LMI] TD4 : Correctif?

Message  Kill-R* le Lun 12 Mai 2008, 10:32

Ah je pensais qu'on pouvait plus avoir cours cette semaine :s

Et bien j'attendrais demain après-midi alors Smile

Kill-R*

Nombre de messages : 55
Age : 30
Prénom : Manuel
Statut : Etd 2ème Réseau
Localisation : Bruxelles
Date d'inscription : 18/09/2007

http://www.reggaetonurbano.be

Revenir en haut Aller en bas

Re: [LMI] TD4 : Correctif?

Message  pbt le Lun 12 Mai 2008, 19:24

Ah, il faudra voir si l'un de nous si colle. N'hésitez pas a répétez la requête auprès des collègues qui ne fréquentent pas fora.


_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI] TD4 : Correctif?

Message  Wark le Lun 12 Mai 2008, 22:25

Kenny a écrit:Hum, et bien non tous les groupes ne sont pas passés ( Crying or Very sad )

Il reste encore le groupe 211 et 212 demain à 13h45.

Chuuuut, on aurait pu avoir la réponse. Razz

De plus, nous ne serons pas évalués sur le palindrome. ;-)

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [LMI] TD4 : Correctif?

Message  Sympho le Mar 13 Mai 2008, 15:58

j'ai ceci et ça tourne


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

=========================
section .bss
;===========================


;===========================
global main
extern printd
;===========================
section .code
;===========================

main:
mov ebp,esp
sub esp,4 ; trou dans la pile : Boolean OK [ebp-4]
sub esp,4 ; handle [ebp-8]

mov ecx,[ebp]
cmp ecx,1
jne restearg
push dword 0; 0 si pas de SP, 1 si -SP
push dword 0 ; handle
call trait
jmp fin

restearg:


mov eax, [ebp+8]
cmp BYTE[eax], "-"
jne fichier

cmp BYTE[eax+1], "s"
jne fichier

cmp BYTE[eax+2], "p"
jne fichier

mov dword[ebp-4], 1 ; on marque 1 dans le "boolean" pour dire qu'il y a le paramètre -sp
cmp dword[ebp],2 ; si il y a que 2 arguments (c'est la commande et -sp donc pas de fichier)
jne fichier

push dword 1
push dword 0
call trait
jmp fin


fichier:
dec ecx
cmp dword[ebp-4],1 ; s'il y a -sp on doit encore dec le nombre d'élément
jne passp
dec ecx
mov esi,12
jmp argum

passp
mov esi,8

argum:

;Sauvegarde de ECX car on en a besoin pour la boucle
push ecx

;open fichier
mov eax,5
mov ebx,[ebp+esi]
mov ecx,0
int 0x80

;recuperation du Handle
mov [ebp-8],eax

push dword [ebp-4]
push eax
call trait
;fermeture du fichier
mov eax,6
mov ebx,[ebp-8]
int 0x80

;on recup la valeur de ECX qu'on avait sauvegardé
pop ecx

add esi,4

loop argum

fin:
call exit


trait:
push ebp
mov ebp,esp ; ebp+12 SP ; ebp+8 = handle ; ebp+4 = adresse retour
sub esp,4 ; compteur = [ebp-4]
sub esp,1024 ; ligne courante
sub esp,4 ; compteur de palindrome = [ebp-1032]
mov dword[ebp-1032],0
pushad ; variable locale, puis on sauvegarde les registres


ligne:
mov ecx,-1028
add ecx,ebp ; on replace ecx pour recommencer à écrire dans la pile
mov dword[ebp-4],0 ; après chaque ligne, on réinitialise le nombre de caractère dans la phrase
boucle:
; appel système lire sur l'entré en paramètres (1 char)
mov eax,3
mov ebx,[ebp+8] ; adresse a verifier
mov edx,1
int 0x80

cmp eax,0
je fproc

cmp byte [ecx],10
je PALIN ; on arrive à la fin de la phrase, on test si c'est un palindrome

inc ecx ; on incrémente ecx pour placer le caractère lu au bon endroit
inc dword [ebp-4]
jmp boucle

PALIN :

mov ebx,-1028
add ebx, ebp ; on place ebx à la première lettre
dec ecx ; car le "LF" a été lu et mis dans la pile, du coup on ne doit pas le comparer avec la première lettre

compare:

mov al,[ecx]
cmp BYTE al,[ebx] ; on compare la derniere et premiere lettre
jne ligne ; si ce n'est pas égal, pas besoin de continuer, on lit une autre ligne
inc ebx ; si c'est le cas, on déplace les 2 pointeurs
dec ecx
cmp ebx,ecx ; si les 2 pointeurs se sont croisés, ça veut dire que c'est un palindrome
jae valide
jmp compare

valide:

inc dword[ebp-1032] ; on incrémente notre compteur de palindrome
push dword[ebp-1032]
call printd
cmp dword [ebp+12],1 ; on regarde si notre boolean Ok (si c'est -sp ou pas) est à 1, si ce n'est pas le cas,
; on ne doit pas l'écrire, mais juste afficher le nombre de palindrome
jne ligne

imprimme:
mov eax,4
mov ebx,1
mov ECX, -1028
add ECX, ebp
mov edx,[EBP-4]
inc edx ; on inc edx, car on a dec ebp-4 pour comparer le premier et le dernier caractère (pour "enlever" le LF) du coup là
; on le récupère pour pouvoir écrire le LF
int 0x80
jmp ligne ; on relit
fproc:
popad
add esp,1032
pop ebp
ret 8 ; ret dans le main et 8 car 2 push pour l'appel!

; -------------------------------------------------
; exit
; -------------------------------------------------
exit:

mov eax,1
mov ebx,0
int 0x80


voilà , bien sur vous aurez vu que je ne donne pas le nombre total de palindrome à la fin, mais au fur et à mesure, mais c'est un détail.

J'ai rajouté du commentaire pour vous aider à la compréhension, mais néanmoins, s'il y a des zones d'ombres, n'hésitez pas à me poser des questions.

Il n'y a pas le traitement d'exception, (il me semble que c'était demandé) pour dire si le fichier existe ou autre, mais notre professeur (jcj) ne m'a rien dit à ce sujet.

Sympho

Nombre de messages : 55
Age : 29
Prénom : Benoît
Date d'inscription : 30/12/2007

Revenir en haut Aller en bas

Re: [LMI] TD4 : Correctif?

Message  Contenu sponsorisé Aujourd'hui à 20:44


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