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 :

La différence entre MUL et IMUL [FAQ]


Sujet :

Assembleur

  1. #1
    Membre régulier Avatar de Dev-FX
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 93
    Points
    93
    Par défaut La différence entre MUL et IMUL
    Bonsoir tous le monde ,

    J'aimerais savoir la différence entre les 2 bouts de code suivants au niveau du résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mov al,2                   
    mov bl,129                
    mul bl
    _____________
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mov al,2
    mov bl,129
    imul bl
    Est-ce que l'instruction 'imul' agit sur les nombres positifs ?
    Est-ce qu'ils vont produire le même résultat, à savoir 258 ?

    Merci .

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    la différence entre les deux tient au fait que l'une des deux instructions (IMUL) porte aussi sur les nombres signés.

    En reprenant ton premier exemple (en hexa) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mov al,2
    mov bl, 0x81 ; soit 129 en décimal
    mul bl
    Dans l'exemple, le multiplicande est bien sûr positif. Grâce à l'instruction MUL on sait pas contre que le multiplicateur est consideré comme positif quel que soit le bit de poids fort.

    BL faisant 8 bits, 0x81 donne en binaire :

    10000001 => bit de poids fort à 1 !

    MUL nous indique que même si le bits de poids fort est armé, on doit considérer le nombre comme positif. Le résultat est donc :

    2 * 0x81 = 2 * 129 = 258


    Deuxième exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mov al,2
    mov bl,129
    imul bl
    IMUL nous indique cette fois si que les nombres (multiplicande et/ou multiplicateur) sont considerés comme négatifs si leurs bit de poids fort est à 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mov bl, 0x81 ; bit de poids fort armé => -127
    d'où le résultat :

    -127 * 2 = -254 = 0xFF02

    Le même raisonnement s'applique à DIV et IDIV.

  3. #3
    Membre régulier Avatar de Dev-FX
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 93
    Points
    93
    Par défaut
    Salut ,

    Merci pour les explications , c'est trés clair !!

    Merci encore.

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

Discussions similaires

  1. Différence entre un "bidouilleur" et un Pro ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 290
    Dernier message: 28/11/2011, 10h53
  2. Réponses: 5
    Dernier message: 11/12/2002, 12h31
  3. Différence entre TCP, UDP, ICMP
    Par GliGli dans le forum Développement
    Réponses: 1
    Dernier message: 13/09/2002, 08h25
  4. Différences entre jmp, jz, jnz, etc
    Par christbilale dans le forum Assembleur
    Réponses: 3
    Dernier message: 05/07/2002, 15h09
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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