afficher un caractére entrez par l'utilisateur - ASM - Programmation
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.
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 ?
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