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 :

Bug ASM 8086


Sujet :

x86 16-bits Assembleur

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 27
    Points : 34
    Points
    34
    Par défaut Bug ASM 8086
    Bonjour j' essai d’exécuter le programme suivant mais il bug pourriez vous me conseiller svp?
    Le programme est sensé convertir l'octet contenu dans AL en sa valeur ascii et le stocker dans result, à l'origine AX = 4B5B


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    ASSUME CS:Code, DS:Data
    Data    SEGMENT
    RESULT  DB 3 DUP(?)
    Data    ENDS
     
    Code    SEGMENT
    Debut:  MOV BX,   offset RESULT
            MOV AH,   AL
     
    QuartH: MOV CL,   4
            SHR AH,   CL
            AND AH,   0FH
            CMP AH,   0AH
            JAE AlphaH
            ADD AH,   '0'
            JMP FinH
    AlphaH: ADD AH,   'A'
            SUB AH,   0AH
    FinH:   MOV [BX], AH
     
    QuartL: AND AL,   0FH
            CMP AL,   0AH
            JAE AlphaL
            ADD AL,   '0'
            JMP FinL
    AlphaL: ADD AL,   'A'
            SUB AL,   0AH
    FinL:   MOV Byte ptr[BX+1], AL
     
    FinCH:  MOV Byte ptr[BX+2], '$'
    Code    ENDS
            END  Debut

    Le code se suspend lors de l'éxécution et
    MOV BX, offset RESULT ne donne rien

  2. #2
    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
    Bonjour,

    Il faudrait que tu nous en dises un peu plus sur ce code :
    - à quoi il sert
    - quel est le bug

    Car si on doit deviner, ça demande plus de boulot, et on est pas assez bien payé

  3. #3
    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
    Excuse, j'avais pas tilté quand tu m'as envoyé le MP (pas reconnu ton pseudo)
    Il vaut mieux continuer la discussion ici, tu as plus de chances d'obtenir
    le résultat que tu cherches.

    Le code que tu donnes n'est qu'une partie du code ? ou bien tu l’exécutes avec
    un débugger ? car là il n'y a rien pour entrer ou sortir des données.

    je vais jeter un oeil mais pas ce soir

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    Salut j'éxécute le code avec un émulateur emu8086 et je prend comme condition initiale AX=4B5B

  5. #5
    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
    Je ne suis pas sûr que tu saches ce que ton prog doit faire


    Il permet de transformer un octet en sa représentation ASCII
    Donc pas la peine de mettre 4B5Bh dans AX, il n'utilisera que AL
    (dès le début du code il y a un mov ah,al )

    le and ah,0Fh après le shr ah,cl ne sert à rien mais ne fausse pas le
    résultat

    donc si tu lance ton prog avec AL=3Ch (c'est un exemple hein)
    RESULT + 0 = '3'
    RESULT + 1 = 'C'
    RESULT + 2 = '$'

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Forthman Voir le message
    Je ne suis pas sûr que tu saches ce que ton prog doit faire


    Il permet de transformer un octet en sa représentation ASCII
    Donc pas la peine de mettre 4B5Bh dans AX, il n'utilisera que AL
    (dès le début du code il y a un mov ah,al )

    le and ah,0Fh après le shr ah,cl ne sert à rien mais ne fausse pas le
    résultat

    donc si tu lance ton prog avec AL=3Ch (c'est un exemple hein)
    RESULT + 0 = '3'
    RESULT + 1 = 'C'
    RESULT + 2 = '$'
    Comme je l'ai dit il doit permettre d'afficher la valeur ascii de AL mais le AX=4B5B est imposé dans l'exo que j'essai de faire(même si cela ne sert à rien ;-) )

  7. #7
    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
    Il te manque alors la partie qui affiche le texte

    Ton prog est destiné à être exécuté par un OS genre DOS ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    Oui le prog doit s'exécuter dans un shell (je suis sous linux) et je n'ai pas le reste il est juste demandé de comprendre le code, mais moi j'aime bien tester pour parfaire ma compréhension.
    Donc j'ai essayé de lancer cette partie mais je me rends compte que si je ne met pas ORG 100H la ligne MOV BX,offset RESULT ne donne rien, est ce normal?

    Soit indulgent stp c'est ma première semaine d'assembleur

  9. #9
    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
    l'instruction org 100h était utilisée pour compiler des programmes pour DOS.

    Excuses moi si mes propos te semblent durs, ce n'est pas le cas
    (au contraire, pour une fois qu'un élève cherche à comprendre, je ne peux que te féliciter )

    donc si le but est juste de comprendre ce que fait ce code, à la fin
    de chaque ligne, mets en commentaire ce qu'elle fait.
    de mon coté je tacherai de corriger si besoin

Discussions similaires

  1. Aide programme asm 8086
    Par kuntagp dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 09/01/2014, 11h35
  2. Problème fonction include asm 8086
    Par Sushiii dans le forum x86 16-bits
    Réponses: 11
    Dernier message: 13/06/2013, 17h50
  3. Réponses: 5
    Dernier message: 06/02/2013, 08h41

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