Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Questions à propos du XOR EAX, EAX


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Questions à propos du XOR EAX, EAX
    Bonsoir,
    Je tiens à préciser que je suis débutant dans l'assembleur.
    Il se trouve que j'ai besoin d'éditer certaines parties d'assembleur pour un projet (voir ci joint la partie du code)

    De base je suis sensé avoir un PUSH 01 à la place du XOR EAX, EAX car je dois le changer en PUSH 02 pour que mon projet marche comme je le souhaite.
    En changeant le XOR EAX, EAX en PUSH 02 ou même 01 le programme crash.

    Initialement cette partie du programme fonctionne de tel sorte qu'un objet qui est placé dans un slot QUITTE ce dernier après avoir appuyé sur un bouton, en changeant l'instruction de fin PUSH 01 en PUSH 02 l'item est sensé rester dans le slot (testé et fonctionnel sur une AUTRE version de ce programme)
    Sauf que sur cette version il y a un XOR EAX, EAX a la place d'un PUSH 01
    Voici l'autre version du programme pour laquelle tout marche correctement


    Merci d'avance,

  2. #2
    Responsable Systèmes

    xor eax,eax va mettre le registre eax à 0. push va empiler une valeur ou un registre. tout ce qui a été empilé doit être dépilé. Il faut comprendre ce qu'on fait. Empiler des valeurs va servir à les sauvegarder ou passer des paramètres à une fonction..
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Expert confirmé
    Bonjour,

    Comme pour tout langage, il faut commencer par en apprendre les bases avant de vouloir l'utiliser pour modifier des programmes, et c'est particulièrement vrai dans le cas de l'assembleur.

    Le mysticisme est une maladie qui crée des problèmes là où il n’en existe pas.

  4. #4
    Membre expérimenté
    En plus d'après tes captures d'écran, un xor eax,eax prend un octet, alors qu'un push 01 en prend deux.
    Tu peux donc remplacer un push 02 par un xor eax,eax suivi d'un nop mais pas l'inverse