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 de lecture de chaîne


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 16
    Points : 20
    Points
    20
    Par défaut Problème de lecture de chaîne
    Salut.
    Mon problème consiste à lire une suite de caractéres jusqu'à ce que le caractére # soit introduit.
    Le problème est que la chaîne résultante ne concatène pas les caractères introduits
    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
     
    Message2 Db ""
    ...
    mov si,offset Message2
    lecture:
    Mov ah,07h
    int 21h
    cmp al,"9"
    jne ajout
    je fin_chaine
     
    ajout:
    Mov [si],al
    lea si,message2+2
    jmp lecture
     
    fin_chaine:
    mov [si],'$'
    Parce que la fonction qui calcule le nombre de caractères reste en boucle infinie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    lea si,message2
    mov bx,00
     
    calcul_taille:
    cmp [si],'$'
    jnz increm
     
    increm:
    add bx,01
    lea si,message2+2
    jmp calcul_taille
    Aidez-moi et 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,

    Quelques problèmes constatés dans ton code :

    1. La déclaration de la variable :

    Tu dois absolument indiquer la longueur maximale de la chaîne à lire ! Par exemple :
    Sinon, au cours de la lecture, le programme viendra allègrement écraser le contenu du segment de données à la suite de Message2.
    Attention : il faudra, dans la boucle de lecture, tenir compte de la longueur maximale.

    2. La lecture au clavier :

    Après la lecture de chaque caractère, il faut simplement incrémenter le registre si, contenant l'adresse de la chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mov 	si,offset Message2
    lecture:
    		Mov 	ah,07h	
    		int 	21h
    		cmp 	al,"9"
    		je 	fin_chaine
    		Mov 	[si],al
    		inc 	si
    		jmp 	lecture
    fin_chaine:
    		mov [si],'$'
    3. Le comptage des caractères :

    Même problème avec le registre si que ci-dessus. Il faut simplement l'incrémenter à chaque itération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		lea 	si,message2
    		mov 	bx,0
    calcul_taille:
    		cmp 	[si],'$'
    		je 	fin_comptage
    		inc	bx
    		inc	si
    		jmp 	calcul_taille
    fin_comptage:
    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]

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

Discussions similaires

  1. [débutant] problème de lecture d'image
    Par shura dans le forum OpenGL
    Réponses: 16
    Dernier message: 03/07/2004, 18h05
  2. [TFileStream] Problème de lecture de string
    Par Pedro dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 13h06
  3. problème de lecture base de registre
    Par pafounet3 dans le forum MFC
    Réponses: 10
    Dernier message: 31/12/2003, 14h06
  4. [fread] Problème de lecture de buffer
    Par karl3i dans le forum C
    Réponses: 2
    Dernier message: 25/09/2003, 09h21
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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