IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Assembleur Discussion :

[Débutant] Comment faire pour mettre tous les bits d'un registre à 1 ?


Sujet :

Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut [Débutant] Comment faire pour mettre tous les bits d'un registre à 1 ?
    Bonjour,

    Je sais que pour mettre tout les bits d'un registre à 0 on doit faire un XOR(ex:XOR EAX,EAX)

    Quelle est l'instruction qui met tout les bits à 1?

    merci

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 947
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 947
    Points : 5 660
    Points
    5 660
    Par défaut
    Hi,

    Il n'y a pas d'instruction spécifique pour cela. Il suffit de mettre à 0 et d'inverser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        xor eax,eax
        not eax

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Points : 44
    Points
    44
    Par défaut
    ou tout simplement

    mieux encore par forçage logique bit par bit( c plus rapide en exécution)

    .........

  4. #4
    Membre averti Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Il me semble que le gain obtenu par les mises à 0 par xor fait partie du passé. Alors si on utilise deux instructions pour mettre tous les bits à 1...
    Si vous savez qu'un registre ou une mémoire est à 0, vous pouvez faire un not ou un dec. Mais je ne vois pas mieux que le mov. Et n'oubliez pas que les instructions autres que le mov positionnent des flags, et que donc les méthodes ne sont pas nécessairement interchangeables.
    En x86, plus généralement en complément à 2, j'aime bien comme beaucoup écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mov reg, -1
    mov mem, -1
    C'est surtout valable si vous le lisez bien, avec comme petit avantage que dans certaines circonstances vous pouvez écrire un code indépendamment de la taille des registres.
    Vous pouvez utiliser votre préprocesseur pour définir par exemple ALL_ON à -1 et ALL_OFF à 0.

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Points : 44
    Points
    44
    Par défaut
    j'ai bien aimer votre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/12/2012, 08h24
  2. Réponses: 2
    Dernier message: 07/02/2011, 20h16
  3. Comment faire pour mettre les tables flocon?
    Par Elise49 dans le forum Mondrian
    Réponses: 6
    Dernier message: 13/05/2009, 16h18
  4. comment faire pour supprimer tous les enregistrements d'une table
    Par sehing7 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/04/2009, 14h13
  5. Réponses: 3
    Dernier message: 23/04/2007, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo