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 :

Programme .com de lecture et d'affichage de chaîne


Sujet :

x86 16-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Programme .com de lecture et d'affichage de chaîne
    S'il vous plaît, j'ai besoin de savoir s'il y a une erreur sémantique qui empêche mon programme de fonctionner correctement. Le voici :

    Code asm : 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
    code         segment use16
                 org 100h
                 assume cs:code,ds:code
    start:
           mov ah, 09h
           mov dX, offset message1 ; afficher le message " Veillez....caractere"
           int 21h
     
     lecture:
           mov ah, 0ch  ; lire la chaine de caractere
           mov al, 0ah
           mov dx, offset chaine
           int 21h
     
     affichage:
           mov ah, 09h
           mov dX, offset message2 ; afficher le message "Voici votre chaine :"
           int 21h
     
           mov ah, 09h ; afficher la chaine saisie
           mov dX, offset chaine
           int 21h
     
     ret
     
           message1 db " Veillez saisir une chaine de caractere",10,13,'$'
           message2 db 10,13,"Voici votre chaine :",10,13,'$'
           chaine db 31,?,30 dup(?),?
     
           code ends
           end start

    Merci d'avance.

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    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 939
    Points : 59 409
    Points
    59 409
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !
    (et désolé pour le délai de réponse)

    En ajoutant au début du programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    start:
              mov       ax,code
              mov       ds,ax
    en déclarant la chaîne de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine    db        31,0,31 dup('$')
    et en passant l'adresse du début de la chaîne lue, qui se trouve 2 octets plus loin que l'adresse chaine (il faut passer les octets de longueur maximum et longueur effective) :
    Ca fonctionne.

    Il faut également sortir proprement du programme, à l'aide de la fonction 4Ch de l'interruption 21h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
              mov       ax,4C00h
              int       21h
    Modifié ainsi et assemblé avec MASM 5.0, ce code fonctionne :
    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
    33
    34
    35
    36
    37
    code      segment   word
     
              org       100h
              assume    cs:code,ds:code
     
    start:
              mov       ax,code
              mov       ds,ax
     
              mov       ah,09h
              mov       dx,offset message1 ; afficher le message " Veillez....caractere"
              int       21h
     
     lecture:
              mov       ah,0ch  ; lire la chaine de caractere
              mov       al,0ah
              mov       dx,offset chaine
              int       21h
     
     affichage:
              mov       ah,09h
              mov       dx,offset message2 ; afficher le message "Voici votre chaine :"
              int       21h
     
              mov       ah,09h ; afficher la chaine saisie
              mov       dx,offset chaine+2
              int       21h
     
              mov       ax,4C00h
              int       21h
     
    message1  db        " Veillez saisir une chaine de caractere",10,13,'$'
    message2  db        10,13,"Voici votre chaine :",10,13,'$'
    chaine    db        31,0,31 dup('$')
     
    code      ends
              end       start
    Bonne prog !
    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]

Discussions similaires

  1. [WD-2003] Lecture seule sans affichage de la box
    Par yalefe dans le forum Word
    Réponses: 3
    Dernier message: 21/09/2009, 20h39
  2. [Dev-Pascal] Programme de combat naval : problème d'affichage
    Par deltarip dans le forum Autres IDE
    Réponses: 1
    Dernier message: 14/02/2009, 23h10
  3. [Débutant] Programme COM qui efface le curseur de souris
    Par le pythonien dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 16/08/2008, 21h40
  4. [GeoTools] Lecture de Shapefile / Affichage
    Par othouven dans le forum SIG : Système d'information Géographique
    Réponses: 1
    Dernier message: 04/10/2007, 15h39

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