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 :

Afficher un tableau


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Afficher un tableau
    Salut, les développeurs :

    Je suis débutant en assembleur 8086 et j'ai des problèmes.
    1- je veux savoir comment écrire un tableau de 10 cases sur le cmd et le faire afficher aussi sur le cmd.

    J'ai essayé d utiliser

    pour l'input.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     mov ah,02       
     mov dl,tab[di]
    int 21h
    pour l'output.
    Évidemment, j'ai écrit la procédure de la boucle.

    Quand je fais afficher un numéro en utilisant que l'output d'un caractère déjà initialisé avec un numéro, l'output me donne comme résultat dans l'affichage une autre chose différente du numéro que j ai utilisé exemple pour si je met .model small
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                                                                                                       .stack
                                                                                                       .data
                                                                                                       a db 2
                                                                                                       .code
                                                                                                       .startup
                                                                                                        mov ah,02
                                                                                                        mov dl,a
                                                                                                        int 21h
                                                                                                        .exit
                                                                                                        end
    Le résultat est ♥
    je voudrais savoir comment écrire et afficher un numéro et puis voir comment faire avec un vecteur.
    Merci d'avance.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 351
    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 351
    Points : 42 822
    Points
    42 822
    Par défaut
    Mets ton code entre balise code (le # dans l'éditeur).

    Tu cherches à afficher la lettre a ?
    dans ce cas, remplaces :

    par :

    sinon tu affiches une valeur numérique (a=10 en héxadécimal)
    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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    merci christophe pour la réponse , mais ce que je voudrais savoir c est comment afficher une variable décimale exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    .model small
    .stack
    .data
    a db 3
    .code
    .startup 
    mov ah ,02
    mov dl,"a"
    int 21h
    .exit
    end
    ce que je veux afficher c est le numéro 3 au lieu du ♥
    merci d avance

  4. #4
    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,

    Ton problème est récurent, tu trouveras un paquet de post sur comment afficher une valeur numérique.
    Pour résumer, tu dois transformer ton nombre en chaîne de caractères. (il faut le coder, il n'y a pas de fonction pour ça)

    Le code ASCII de "0" est 48 ("1"=49 , "2"=50 ...etc...)
    Tu fais une boucle d'autant de chiffre que comporte ton nombre
    en faisant une division et en récupérant le reste (modulo)
    ou alors une boucle indéfinie qui se terminera avec un résultat de division = 0

    - Début
    - diviser ax par 10 (si tu veux afficher en décimal)
    - récupérer le reste présent dans dx (le reste de la division aura une valeur comprise entre 0 et 9 )
    - ajouter 48 à dx (pour obtenir le code ASCII)
    - placer la valeur de dx dans ta chaine (en commençant par la fin)
    - si résultat de la division = 0 (AX) alors fin
    - sinon boucle sur Début

    En déroulant avec AX=634:

    - début
    - ax/10 : AX = 63 et DX = 4
    - DX+48 = 52 = "4"
    - place DX dans la chaîne, et décrémente le pointeur de chaîne
    - teste si AX=0 (non = 63)
    - boucle début
    - ax/10 : AX = 2 et DX = 3
    - DX+48 = 51 = "3"
    - place DX dans la chaîne, et décrémente le pointeur de chaîne
    - teste si AX=0 (non = 6)
    - boucle début
    - ax/10 : AX = 0 et DX = 6
    - DX+48 = 54 = "6"
    - place DX dans la chaîne, et décrémente le pointeur de chaîne
    - teste si AX=0 (oui)
    - fin
    - affiche la chaîne

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    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
     
    .model small
    .stack
    .data
    a dw 377
    .code
    .startup 
                ;mov cx,a
                MOV Ax,a
                mov dx, 0           ;CX = VALUE THAT I WANT TO CONVERT
                MOV Bx,10           
        ASC2:
                DIV BX              ;DIV AX/10
                ADD DX,48           ;ADD 48 TO REMAINDER TO GET ASCII CHARACTER OF NUMBER 
                PUSH ax             ;SAVE AX
                MOV AH,2            ;PRINT REMAINDER STORED IN DX
                INT 21H             ;INTERRUP
                POP Ax              ;POP AX BACK
                CMP Ax,0            
                JZ EXTT             ;IF AX=0, END OF THE PROCEDURE
                JMP ASC2            ;ELSE REPEAT
        EXTT:
    .exit
    end
    j ai ecris le code mais le probleme ca print que le numero 7 , j ai essayer de m en sortir , et de printer la sequence , mais je n ai pas reussit, merci beaucoup Forthman

  6. #6
    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
    Avant la division tu mets DX à 0, ça t'oblige d'avoir une valeur non signées, mais bon,
    ça n'est pas un problème puisque ton exemple est utilise une valeur positive.

    Donc mettre le registre DX à 0 est une bonne solution, pourvu que ce soit fait avant chaque division

    Je te laisse chercher puisque je vois que tu t'en sors bien

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    merci beaucoup forthman , ça a fonctionner les 3 numéros ont apparu

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

Discussions similaires

  1. [TP] [Débutant] Afficher un tableau en mode graphique
    Par xiungung dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 13/01/2006, 23h13
  2. Réponses: 3
    Dernier message: 26/09/2005, 23h24
  3. Comment afficher un tableau dans TStringGrid ?
    Par doubledj dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/09/2005, 03h21
  4. Réponses: 2
    Dernier message: 03/03/2005, 15h57
  5. AFFICHER UN TABLEAU DYNAMIQUE
    Par ghassenus dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2002, 15h19

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