Entrée d'une chaine de cractères

Résolu
w4kfu Messages postés 8 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 13 avril 2009 - 9 avril 2009 à 12:02
w4kfu Messages postés 8 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 13 avril 2009 - 9 avril 2009 à 14:06
J'écris actuellement un programme en assembleur utilisant la fonction
0Ah de linterruption 21h ( Entrée d'une chaine de caractère )
Voila le code ne fonctionnant pas :


.MODEL SMALL
.STACK 100h
 
.DATA
message db "Vous avez tapé:",10,13,"$"
chaine db 13,?,14 dup(?),?
 
.CODE
.8086
 
debut:
 
MOV AX,@data
MOV DS,AX
 
;Effacement du buffer et du saisi clavier
mov ah,0Ch
;Saisie au clavier d'une chaine
mov al,0Ah
;buffer ou sera placé la chaine
mov dx,OFFSET chaine
int 21h
 
;Affichage du message
MOV AH,09h
MOV DX,OFFSET message
INT 21h
 
;Affichage chaine rentré
MOV AH,09h
MOV DX,OFFSET chaine
INT 21h
 
END debut



Après compilation edition des liens du programme ,  j'execute , je rentre bien ma chaine mais au moment de l'affichage ce n'est pas du tout ma chaine qui s'affiche

3 réponses

w4kfu Messages postés 8 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 13 avril 2009
9 avril 2009 à 13:18
Je crois avoir compris mon problème , ma chaine ne se termine pas par un '$' donc normal qu'il m'affiche n'importe quoi.
Est ce bien cela le problème que je rencontre ?
3
w4kfu Messages postés 8 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 13 avril 2009
9 avril 2009 à 14:02
Voilà l'évolution de mon programme :
.MODEL SMALL
.STACK 100h

.DATA
message db "Tapez quelque chose:",10,13,"$"
message2 db 10,13,"Vous avez tapee :$"
chaine  db 13,?,14 dup(?),?

.CODE
.8086

debut: 

        MOV AX,@data
        MOV DS,AX
               
        ;Affichage du message de demande de frappe
        MOV AH,09h
        MOV DX,OFFSET message
        INT 21h           
               
        ;Effacement du buffer et du saisi clavier
        mov ah,0Ch
        ;Saisie au clavier d'une chaine       
        mov al,0Ah
        ;buffer ou sera placé la chaine
        mov dx,OFFSET chaine
        int 21h

        ;On met bx à 0
        xor bx,bx
        ;On met le nombre de caractere lu dans bl
        mov bl,byte ptr[chaine+1]
        ;On ecrit 0 après la chaine
        mov byte ptr[chaine+2+bx],0
       
        ;Affichage du message
        MOV AH,09h
        MOV DX,OFFSET message2
        INT 21h   
       
        ;Affichage chaine rentré
        MOV AH,09h
        MOV DX,OFFSET chaine+2
        INT 21h
       
        ;;fin du programme et retour au dos
        MOV AH,4Ch
        INT 21h
       
        END debut

Le programme me r affiche bien ma chaine , mais j'ai parfois l'apparition de caractère bizarre  à la fin du programme...
3
w4kfu Messages postés 8 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 13 avril 2009
9 avril 2009 à 14:06
Problème résolu au lieu de mettre 0 a la fin de la chaine , j'ai mis le code hexa du $ => 24h
3
Rejoignez-nous