Assembleur X86, pourquoi ma procedure bug?svp

Fermé
Skeleton - 28 mai 2004 à 12:30
JSS Messages postés 3745 Date d'inscription jeudi 22 avril 2004 Statut Contributeur Dernière intervention 17 décembre 2004 - 28 mai 2004 à 13:20
Alors voila je vais vous copiez coller ma procedure et vous expliquez après:

;debut de la procedure

AfficheGom PROC

MOV CX, Pacman_TileHeight ;initialisation de CX pour la boucle bcle1
MOV SI, 0;SI prend la position de depart du tile PacGom

PacGomLoop1:
PUSH CX;on sauve la valeur du compteur de la boucle bcle1
MOV CX, Pacman_TileWidth ; initialisation de CX pour la boucle bcle2
PUSH DI;on sauve la position du curseur
PacGomLoop2:
;Dessine une ligne du sprite PacGom
MOV AL, PacGom[SI] ;2 lignes qui permettent de
CMP AL, 000
JE transparent
MOV ES:[DI], AL ;de faire correspondre une case du tableau à une pixel
transparent:

INC SI
INC DI

LOOP PacGomLoop2;on dessine ligne par ligne le sprite pacgom

POP DI;on remet le curseur au debut du sprite pour lui ajouter 320 facilement
ADD DI, 320
POP CX;on recupere le compteur de bcle1 pour le decrementer correctement
LOOP PacGomLoop1

AfficheGom ENDP

;Fin de la procedure



Voila il y a donc deux boucles, car j'affiche un sprite (ici pour le jeu pacman) je veux afficher les ptit point jaune que pacman mange ^^ mais bon voila ma procedure pour dessiner un de ces sprite a l'ecran fait buger mon prog entier puisque quand je lance l'exe il s'arrete a cette procedure je narrive pu a en sortir


d ou peut venir le probleme?
(mes push et pop sont correct...)

merci ;)

2 réponses

de memoire et selon le compilateur que tu utilises je crois me souvenir que les comparaisons à 0 ne se font bien qu'avvec un 0 significatif et plante avec 00 ou 000 etc...

mais bon c'est un vague souvenir et en plus selon les compilateur ça peut etre ou non geré....

j'éspere ne pas t"envoyer sur une fausse piste...

aussi (rien à voir avec ton bug)
pour optimiser evites les mov XX, 0
fais plustot un xor XX,XX
ça fait 2pas aulieu de 3pas...

en plus ça permet de diminuer la taille du fichier...compilé ou executé si tu ecrits en direct live l'éxécutable...
0
JSS Messages postés 3745 Date d'inscription jeudi 22 avril 2004 Statut Contributeur Dernière intervention 17 décembre 2004 32
28 mai 2004 à 13:20
Bonjour ou Bonsoir,

Excuse moi mais je vois pas quand tu sors de ta seconde boucle ?
J'ai pas vu de jump sous une certaine condition à par exemple une etiquette qui pourrait s'appeler fin de proc.

J'espere que ca pourra t'aider.

bon courage.

JSS.avec.ses.souvenirs.d'assembleur.
0