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 :

Passage de variable dans registre


Sujet :

x86 16-bits Assembleur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 52
    Points : 27
    Points
    27
    Par défaut Passage de variable dans registre
    Bonjour, j'ai un code de ce type là. Et quand je regarde l'execution pas à pas, apres le deroulement de l'instruction "mov ax, N1", je peux voir que ax prend la valeur 20CD alors qu'il devrait prendre la valeur 001E.
    Ca me fait pareil pour N2, ça enregistre 0020 au lieu de 000A.
    Enfin, apres l'execution du programme, je peux voir que Res =0000 en mémoire alors qu'il devrait être egal a (N1+N2)/2.

    Avez vous une idée d'où proviennent ces problèmes?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Data segment
     
    N1  db  1Eh
    N2  db   0Ah
    Res dw  ?
     
    end
     
    Code segment
    start
     
    mov ax, N1
    mov bx, N2
    add ax, bx
    shr, ax, 1
    mov Res, ax

  2. #2
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    N1 et N2 n'ont pas la même taille que AX et BX, en fait c'est bizarre que l'assembleur n'émette même pas de warning. Quand tu mets N1 dans AX l'assembleur comprend qu'il faut chercher le word à l'adresse de N1 (donc N1 et N2) et le mettre dans AX.
    Pour résoudre le problème il suffit d'utiliser des words (dw) ou les instructions MOVZX/MOVSX qui font la même chose que MOV mais avec la source qui est plus petite que la destination (mais ce serait du chipotage ici).
    :wq

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 52
    Points : 27
    Points
    27
    Par défaut
    Ok merci, j'essaierai.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 52
    Points : 27
    Points
    27
    Par défaut
    Ca ne marche pas... Ca fait toujours la même chose.

  5. #5
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Chez moi ça marche. Tu dois avoir quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Data segment
    N1   dw  1Eh
    N2   dw  0Ah
    Res  dw  ?
    end
     
    Code segment
    start
     
    mov ax, N1
    mov bx, N2
    add ax, bx
    shr ax, 1
    mov Res, ax
    Et à la fin Res vaut 14.
    :wq

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 52
    Points : 27
    Points
    27
    Par défaut
    Non, moi ça ne marche pas...

Discussions similaires

  1. passage de variables dans un formulaire
    Par albo69 dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 22h52
  2. [PHP-JS] Passage de variable dans un mailto javascript
    Par arsenik7 dans le forum Langage
    Réponses: 26
    Dernier message: 18/01/2006, 10h45
  3. [XSL] Passage de variable dans un template
    Par Otarie dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/11/2005, 23h50
  4. Passage de variable dans une requête
    Par zestrellita dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/09/2004, 13h27
  5. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 10h06

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