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 :

Saisie et affichage d'une chaîne de caractères


Sujet :

x86 16-bits Assembleur

  1. #1
    Débutant  
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Points : 41
    Points
    41
    Par défaut Saisie et affichage d'une chaîne de caractères
    Bonjour à tous,

    Je veux saisir une chaîne de caractères à partir du clavier et puis l'afficher. Bon la saisie se fait alors que l'affichage non.
    Merci de m'aider, voisi le code :
    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
    donnees segment
    buffer db 32 dup ("$")
    donnees ends
     
    code segment
    main: assume cs:code,ds:donnees
     
    mov ax, donnees
    mov ds, ax
     
    mov dx, offset buffer
    mov ah,0ah
    int 21h
    ;mov bx,[dx]
    ;mov dx, buffer
    mov ah,09
    int 21h
     
    mov ah, 4ch
    int 21h
    code ends
    end main
    Merci

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    N'est-ce pas plutôt que tu n'as pas le temps de voir l'affichage de la chaîne avant la terminaison du programme ?
    Insère une lecture de caractère au clavier après l'affichage, afin de faire une pause.

    Quoi qu'il en soit, la définition de ton buffer de lecture doit être la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Buffer db 32, 0, 32 dup ('$')
    Avec, dans l'ordre :
    • 1 octet pour la longueur maximale
    • 1 octet pour la longueur effective
    • Le buffer proprement dit
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Débutant  
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Points : 41
    Points
    41
    Par défaut
    cette fois j'ai eu l'affichage mais pas de ma chaine, plutot d'un seul caractere spécial.
    merci

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Il faut donner à la fonction 09h l'adresse du début du buffer à afficher, qui est Buffer + 2, puisque les deux premiers octets sont la longueur maximale et la longueur effective (que, forcément, il ne faut pas afficher).
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Débutant  
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Points : 41
    Points
    41
    Par défaut
    toujours pas de résultat


    voici le code après modification
    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
     
    donnees segment
    buffer db 32,0,32 dup ("$")
    donnees ends
     
    code segment
    main: assume cs:code,ds:donnees
     
    mov ax, donnees
    mov ds, ax
    mov dx, offset buffer
    mov ah,0ah
    int 21h
     
    lea dx,buffer+2
    mov ah, 09
    int 21h
     
    mov ah, 4ch
    int 21h
     
     
    code ends
    end main

    merci bien

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Ah mais il y a une chose que j'ai oubliée.
    En fait, ta chaîne s'affiche bien mais sur la même ligne que l'input clavier. Les deux se superposent.
    Il suffit d'ajouter un saut à la ligne avant d'afficher la chaîne et le tour est joué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    crlf      db        0Dh,0Ah,'$'   ; Saut à la ligne
    ...
              lea       dx,crlf
              mov       ah,09h
              int       21h
              lea       dx,buffer+2
              mov       ah,09h
              int       21h
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  7. #7
    Débutant  
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Points : 41
    Points
    41
    Par défaut
    toujours pas de résultat, que des caractère spéciaux

  8. #8
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Le code suivant fonctionne très bien (assemblé avec MASM 5.0) :
    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
    donnees   segment
     
    crlf      db        0Dh,0Ah,'$'
    buffer    db        32,0,32 dup ('$')
     
    donnees   ends
     
    code      segment
     
              assume    cs:code,ds:donnees
     
    main:     mov       ax,donnees
              mov       ds,ax
     
              mov       dx,offset buffer
              mov       ah,0Ah
              int       21h
     
              lea       dx,crlf
              mov       ah,09h
              int       21h
     
              lea       dx,buffer+2
              mov       ah,09h
              int       21h
     
              mov       ah,4Ch
              int       21h
     
    code      ends
     
              end       main
    Quel assembleur ("compilateur") utilises-tu ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  9. #9
    Débutant  
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Points : 41
    Points
    41
    Par défaut
    merci infiniment...

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

Discussions similaires

  1. affichage d'une chaîne de caractères dans un textarea
    Par laurentSc dans le forum Langage
    Réponses: 10
    Dernier message: 15/12/2009, 23h27
  2. Problème d'affichage d'une chaîne de caractères
    Par bob32 dans le forum Assembleur
    Réponses: 13
    Dernier message: 23/06/2008, 22h06
  3. limiter l'espace d'affichage d'une chaîne de caractères
    Par loic.ledouble dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 26/04/2008, 22h49
  4. [MySQL] Affichage d’une chaîne de caractères contenant des parenthèses
    Par mathiotp dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/11/2007, 20h31
  5. Saisie et affichage d'une chaîne de caractères
    Par sali dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/03/2004, 18h01

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