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

x86 16-bits Assembleur Discussion :

Les opérations arithmétiques et logiques


Sujet :

x86 16-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 8
    Points : 0
    Points
    0
    Par défaut Les opérations arithmétiques et logiques
    Bonsoir

    svp
    - Expliquer les instructions ADD,ADC,SUB,SBB,MUL,IMUL,DIV,IDIV,INC,DEC,NEG
    - Montrer La différence entre MUL et IMUL , à l'aide d'un exemple en (B)
    et merci

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 620
    Points
    23 620
    Par défaut
    Bonjour et bienvenue,

    Nous pouvons t'aider mais nous ne ferons pas ton travail à ta place. Montre-nous ce que tu as écrit jusqu'ici et où tu bloques en particulier, et nous tâcherons de t'aider.
    Merci également de lire les règles du forum Assembleur et de nous donner les informations qui y sont précisées.

    Bon courage.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Bonjour et bienvenue,

    Nous pouvons t'aider mais nous ne ferons pas ton travail à ta place. Montre-nous ce que tu as écrit jusqu'ici et où tu bloques en particulier, et nous tâcherons de t'aider.
    Merci également de lire les règles du forum Assembleur et de nous donner les informations qui y sont précisées.

    Bon courage.
    merci
    je suis nouveau dans ce domaine ,commencer je dois expliquer les instructions
    et je sais que
    L'instruction MUL est utilisé pour les nombres non signés et IMUL pour les signés (petit rappel : les nombres signés peuvent être négatifs contrairement aux non signés, par exemple en 16 bits en non signé les nombres vont de 0 à 65535 et en signé ils vont de -32768 à 32767). Contrairement aux opérations précédentes, la multiplication n'a besoin que d'une seule opérande : la source. La destination et donc le nombre qui devra être multiplié se trouvera toujours et obligatoirement dans AX. La source est un registre.
    est-ce vrai ? svp je veux exemple à comprendre ce

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 428
    Points : 43 051
    Points
    43 051
    Par défaut
    Ou coince tu ?

    As tu compris la différence entre un nombre signé et un nombre non signé ?

    Et oui, le résultat d'une multiplication se trouvera toujours dans eax.

    multipliera le contenu de eax par ecx et le résultat sera dans eax.

    tu peux aussi jetr un oeil ici :
    http://asm.developpez.com/cours/
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Ou coince tu ?

    As tu compris la différence entre un nombre signé et un nombre non signé ?
    dsl no
    et quel est la différence entre MUL et IMUL? exactement !!

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 428
    Points : 43 051
    Points
    43 051
    Par défaut
    mul c'est pour une multiplication non signée, imul pour une multiplication signée.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    mul c'est pour une multiplication non signée, imul pour une multiplication signée.
    oh merci coince :*
    SVP donnez-moi un exemple simple

  8. #8
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    'soir,

    petite correction :

    mul ecx

    multiplie bien ecx par eax, mais le résultat est dans edx:eax

    c'est le multiplicateur qui renseigne sur la taille de la destination (qui fait le double)

    mul reg8 (al,bl,cl,dl) -> résultat dans ax
    mul reg16 (ax,bx,cx,dx...etc) -> résultat dans dx:ax
    mul reg32 (eax,ebx,ecx,edx..etc...) -> résultat dans edx:eax

    Pour les nombres signés ou non, déjà il faut bien comprendre le sens du mot "signé"
    on ne parle pas de signature en bas du chèque mais du signe + ou - devant un chiffre
    En l’occurrence on ne s'occupe que du "-" car le "+" ne s'écrit jamais (devant un nombre positif)

    Pour me simplifier un peu l'écriture, je vais parles des nombres 8 bits (mais c'est pareil pour tous les autres)

    Avec 8 bits, nous pouvons coder 256 valeurs différentes.
    Ou bien la valeur est prise comme étant "non signée" et peut aller de 0 à 255
    Ou bien la valeur est prise comme étant "signée" et peut aller de -128 à 127
    C'est au programmeur de décider si les valeurs qu'il traite sont signées ou non.

    dans le cas d'un nombre "signé" (donc pouvant être négatif), le signe est donné par le bit le plus à gauche.
    par exemple :
    00001110 = positif ( = 14 en décimal)
    11110011 = négatif ( = -13 en décimal)

    Pour lire une valeur négative, il faut inverser tous les bits, et ajouter 1 au résultat
    dans mon exemple au dessus :
    inverse = 00001100
    +1 = 00001101 ( =13 en décimal)

    ça fonctionne aussi pour transformer un nombre positif en négatif (inverse + 1)

    le +1 s'explique avec la valeur "0" ce dernier n'a pas de signe
    donc si on a : 00000000 et qu'on applique l'inverse, on obtient : 11111111
    +1 = (1)00000000 le 1 déborde des 8 bits et on se retrouve bien à nouveau avec nos 8 bits à 0

  9. #9
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 428
    Points : 43 051
    Points
    43 051
    Par défaut
    multiplie bien ecx par eax, mais le résultat est dans edx:eax
    Bien vu. Si le résultat est <32 bits dex sera alors égal à 0.

    dans le cas d'un nombre "signé" (donc pouvant être négatif), le signe est donné par le bit le plus à gauche.
    le bit le plus à gauche, tu le trouvera sous le nom de bit de poids fort ( le plus le plus à droite étant le bitr de poids faible) ou sous le nom de MSB : Most Significative Bit bit le plus significatif en Français.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    maintenant je ne comprends pas
    par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mov al,2
    mov bl,XX
    mul bl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mov al,2
    mov bl,XX
    imul bl
    XX quand je l'utilise mul ou imul ??

  11. #11
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    XX quand je l'utilise mul ou imul ??
    Est-ce que XX peut être un nombre relatif inferieur à zéro dans ton cas ?

    Si oui, utilises imul, dans le cas contraire utilise mul.

    parce que...
    Citation Envoyé par Forthman
    C'est au programmeur de décider si les valeurs qu'il traite sont signées ou non.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/10/2014, 12h34
  2. Opérations arithmétiques sur les Listes
    Par yoshik dans le forum Général Python
    Réponses: 33
    Dernier message: 17/06/2009, 18h39
  3. Opérations arithmétiques sur les caractères
    Par JolyLoic dans le forum C
    Réponses: 6
    Dernier message: 18/01/2009, 21h59
  4. Opération arithmétique de String à Float
    Par Shiryu57 dans le forum Langage
    Réponses: 4
    Dernier message: 13/03/2006, 10h22
  5. [VAL] Opérations arithmétiques
    Par WriteLN dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/05/2005, 09h59

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