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 :

Problème code source affichage du nom de l'utilisateur


Sujet :

x86 16-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut Problème code source affichage du nom de l'utilisateur
    Bonjour,

    Je suis débutant en nasm et je voulais faire un programme qui demande le nom de l'utilisateur et qui lui renvoie un message du genre "vous vous appelez Bernard" par exemple. Voici mon code source :
    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
    section .text
    org 100h
    mov dx,msg
    mov ah,9 ;afficher message
    int 21h 
     
     
    MOV DX, message_entree
    MOV AH, 0Ah ;entrée de l'utilisateur
    int 21h
     
    mov dx,msg2
    mov ah,9 ; affichage de "ah vous vous apellez..."
    int 21h
     
    mov dx,message_entree
    mov ah,9 ; ça cloche ici !!!
    int 21h
     
    MOV DX, message_entree
    MOV AH, 0Ah ;entrée de l'utilisateur pour pause
    int 21h
     
    mov ah,4Ch ;fin d'un exe
    int 21h
     
     
     
    section .data
    msg db 'Comment vous appelez vous ?',0Dh,0Ah,'$'
    msg2 db "Vous vous appelez donc", '$'
     
    section .bss
    message_entree times 100 resb '?'

    Mon problème est que je n'arrive pas à ré-afficher le nom de l'utilisateur avec l'interruption 21h dans "message_entree".

    Merci d'avance pour vôtre aide.

  2. #2
    Expert éminent
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    15 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15 203
    Billets dans le blog
    10
    Par défaut
    Bonsoir

    L'instruction d'affichage est 09h de l'int 21h et pas 9

    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
    section .text
    org 100h
    mov dx,msg
    mov ah,09h ;afficher message
    int 21h 
     
     
    MOV DX, message_entree
    MOV AH, 0Ah ;entrée de l'utilisateur
    int 21h
     
    mov dx,msg2
    mov ah,09h ; affichage de "ah vous vous apellez..."
    int 21h
     
    mov dx,message_entree
    mov ah,09h ; ça cloche ici !!! ====> c'est 09h et pas 9
    int 21h
     
    MOV DX, message_entree
    MOV AH, 0Ah ;entrée de l'utilisateur pour pause
    int 21h
     
    mov ah,4Ch ;fin d'un exe
    int 21h
     
     
     
    section .data
    msg db 'Comment vous appelez vous ?',0Dh,0Ah,'$'
    msg2 db "Vous vous appelez donc", '$'
     
    section .bss
    message_entree times 100 resb '?'
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Hia,
    Citation Envoyé par JML19 Voir le message
    L'instruction d'affichage est 09h de l'int 21h et pas 9
    En l'occurrence, ça ne change rien (9 en hexa est la même chose que 9 en décimal).

    Mais c'est quand même une bonne habitude de préciser les valeurs comme elles sont données dans les docs.

  4. #4
    Membre Expert
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Par défaut
    Bonjour,

    Je n'ai jamais utilisé cette fonction du DOS (0Ah : lecture d'une chaine)
    mais visiblement le buffer doit être paramétré avec :
    Octet 00h (1octet) : Nombre maxi de caractères du buffer
    Octet 01h (1octet) : Nombre de caractères actuellement lus
    Octet 02h (n octets) : le contenu à proprement parler

    a+ François

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    @Forthman :

    C'est ça, merci ! Mais pourquoi quand je mets juste la phrase comme elle est, ça ne marche pas ? Pourtant chaque caractère ASCII a une valeur numérique, non ?

    Et je ne comprends pas ce que signifie "nombre de caractères actuellement lus". Peux tu m'expliquer ?

  6. #6
    Membre Expert
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Par défaut
    Comme je l'ai dit, je n'ai jamais utilisé cette fonction du DOS (je n'ai jamais
    beaucoup utilisé les fonctions du dos en général)

    J'imagine que la lecture des caractères s'arrête après l'appui sur la touche
    "entrée"

    Dans ce cas il serait logique que le nombre de caractère entrés soit dans l'octet 01h (le deuxième octet en fait)

    Par exemple tu définis une longueur maxi de chaine (64 caractères au hasard)
    tu auras donc :
    octet 00h = 64
    octet 01h = ?? (on s'en fout c'est la fonction dos qui placera le nombre de caractères)
    octet 02h = allocation de 64 octets correspondant au 64 caractères.

    Si ça ne marche toujours pas, je ferai un petit test de mon coté.

    a+ François

Discussions similaires

  1. Problème code source calculatrice !
    Par MarvinBosst dans le forum C++
    Réponses: 8
    Dernier message: 30/03/2015, 19h43
  2. Problème code source SQL d'un formulaire
    Par vbenjamin dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 14/08/2012, 10h37
  3. Problème code source debutant
    Par donald54470 dans le forum Débuter
    Réponses: 10
    Dernier message: 23/07/2011, 23h09
  4. Problème Code Source de la page
    Par imparator_42 dans le forum VBScript
    Réponses: 11
    Dernier message: 14/04/2008, 11h33
  5. Affichage de caractère spéciaux absent dans le code source
    Par HNT dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 03/11/2005, 22h38

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