afficher un caractére entrez par l'utilisateur

afficher un caractére entrez par l'utilisateur - ASM - Programmation

Marsh Posté le 10-11-2005 à 11:14:58    

Bonjour, voila je suis un gros newbie en assembleur lol et je bloque déja pour une bete intrustion :(
 
Je voudrais recuperer un caractére entrez par l'utilisateur et l'afficher malheuresement je n'y arrive pas , si quelqu'un pourrait m'aider ca serait sympa merci d'avance...
 
Voici mon script :
 
 
.MODEL SMALL
.STACK
 
;---------------
 
.DATA
 
char  db "Veuillez entrer un caractere : $"
char2 db "Caractere entre : $"
 
;---------------
 
.CODE
 
MAIN proc near
 
MOV ax,@DATA   ;obligatoire
MOV ds,ax      ;obligatoire
 
LEA dx,char    ;affichage char
MOV ah,09h
INT 21h
 
 
MOV ah,08h     ;attente de carac
INT 21h
 
LEA dx,char2   ;affichage char2
MOV ah,09h
INT 21h
 
LEA dl,al       ;:>>> probléme a ce niveau ci :S
MOV ah,06h
INT 21h
 
MOV ah,4Ch     ;obligatoire
INT 21h        ;obligatoire
 
MAIN endp
 
;---------------
 
END MAIN

Reply

Marsh Posté le 10-11-2005 à 11:14:58   

Reply

Marsh Posté le 10-11-2005 à 12:22:39    

Bonjour
Je n'ai pas fait d'assembleur dos depuis au moins 10 ans donc je peux me tromper.
Il est probable que le caractère entré par l'utilisateur est renvoyé dans al par l'instruction int 21h. Les registres étant très volatils (surtout al, ax, eax) il est probable que son contenu soit modifié par le int 21h suivant (celui qui affiche char2). il vaut donc mieux faire un push ax pour le sauvegarder puis faire un pop dx au lieu de lea dl, al
il est possible aussi de le sauvegarder dans bl, bh, cl, ch si on est sure que la int 21h ne modifie pas ces registres, il est aussi possible de réserver une place pour un octet dans le segment data et de s'en servir pour sauvegarder le dit caractère.
noter qu'il vaut mieux utiliser lea pour charger une adresse effective plutot que pour charger un registre.

Reply

Marsh Posté le 10-11-2005 à 12:33:54    

ta pas faut, la valeur de AL est bien modifier alors j'ai sauvegarder la valeur de AL dans BL et je demande d'afficher MOV DL,BL, mais ceci ne fonctionne tjr pas :'(
 
Mais sinon comment on fait un Push AX et faire un POP dx ?

Reply

Marsh Posté le 13-11-2005 à 13:14:00    

c'est bon les gars merci j'ai trouver :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed