Rechercher : dans
Par :

Assembleur X86, pourquoi ma procedure bug?svp

Dernière réponse le 28 mai 2004 à 13:20:48 Skeleton, le 28 mai 2004 à 12:30:11 
 Signaler ce message aux modérateurs

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 ;)

Meilleures réponses pour « Assembleur X86, pourquoi ma procedure bug?svp » dans :
Liens utiles assembleur x86 Voir Voici quelques liens utiles pour l'assembleur x86. Le but étant de compiler des documents pertinents autant pour ceux qui débutent que pour ceux qui sont à l'aise dans ce domaine. Tutoriels Références complètes Assembleur sous...
Exercice assembleur x86 inversion de chaîne Voir Introduction Notions abordées dans cet exercice Énoncé Rappel Indices Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un...
Exercice assembleur x86 nombre premier VoirIntroduction Notions abordées dans cet exercice Enoncé Rappel Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un assembleur...
Exercice assembleur x86 occurence d'un caractère VoirIntroduction Notions abordées dans cet exercice Enoncé Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un assembleur libre,...
Serveur X sous Windows VoirIl est possible d'installer un serveur X sous Windows afin d'utiliser les applications X-Windows (Gnome, KDE, etc.) sous Windows (par exemple à travers une connexion ssh). La méthode suivante n'utilise pas Cygwin. Dans l'exemple ci-dessous,...
Télécharger ZSNES VoirSi vous avez toujours voulu d'un émulateur pour Super Nintendo, celui ci vous plaira sûrement ! ZSNES est un émulateur open source de super Nintendo. Il a été écrit avec l'assemblage x86, C et C++. Pour le plus grand bonheur de ceux qui utilisent...
Télécharger NTFS for Mac OS X VoirAccès total en lecture et en écriture vers des volumes NTFS NTFS for Mac® OS X fournit un accès total (lecture ou écriture, formatage) vers des partitions NTFS. Compatible avec toutes les versions de NTFS Toutes les versions NTFS sont prises en...
Les procédures en assembleur VoirLa notion de procédure En langage assembleur, on appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la procédure. Cette notion de sous-programme est généralement appelée fonction dans d'autres...
VBScript - Les fonctions et les procédures VoirLa notion de procédure On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction (ou procédure)...
Introduction à l'assembleur VoirLes prérequis nécessaires Le langage assembleur est très proche du langage machine (c'est-à-dire le langage qu'utilise l'ordinateur : des informations en binaire, soit des 0 et des 1). Il dépend donc fortement du type de processeur. Ainsi il...

1

francois, le 28 mai 2004 à 13:14:26

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...

Répondre à francois

2

 JSS, le 28 mai 2004 à 13:20:48

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.

Répondre à JSS