Convertir un nombre Hexa en ASCII

Convertir un nombre Hexa en ASCII - ASM - Programmation

Marsh Posté le 12-12-2005 à 18:49:06    

Bonjour... je voudrais savoir comment je pourrai convertir un nombre Hexa en code ascii
 
le code hexa sera taper au clavier et cette valeur sera retournée mais affiché par son correspondant Ascii
 
Merci D'avance...

Reply

Marsh Posté le 12-12-2005 à 18:49:06   

Reply

Marsh Posté le 12-12-2005 à 19:04:40    

C'est comme pour le decimal :  
365 = 100 * 3 + 10 * 60 + 5
Par exemple, 0x47 ca vaut :
0x10 * 0x04 + 0x7
Si ton gars il tape deux caracteres au clavier : e1, e2 ben tu prends les nombres associes aux chiffres tape ( '1' -> 1,  ....   '9' ->,    'a'->10,  .... 'f'->15 ) et tu appliques la formule :
e1 * 16 + e2
Tu as la valeur du nombre. Libre a toi de l'afficher en ascii si tu veux.

Reply

Marsh Posté le 12-12-2005 à 19:08:27    

la valeur oui d'accord... moi ce que je veux c'est de l'afficher en ASCII je sais pas comment faire, par exemple si l'utilisateur tape : 41
mon programme devra afficher le caractére : A

Reply

Marsh Posté le 12-12-2005 à 19:23:29    

c'est l'affichage qui pose probleme alors c'est pas la conversion. Dans ce cas, quel systeme, quel langage?

Reply

Marsh Posté le 12-12-2005 à 19:44:56    

Ben sous Xp ( donc simulation DOS ) et en langage Assembleur

Reply

Marsh Posté le 12-12-2005 à 20:54:35    

tu utilises quoi pour afficher d'habitude? l'int 21?


Message édité par Ace17 le 12-12-2005 à 20:54:52
Reply

Marsh Posté le 12-12-2005 à 21:13:07    

oui l'int 21 ( celle du dos... )

Reply

Marsh Posté le 12-12-2005 à 23:06:54    

Ben dans ce cas :
mov ah, 02h
mov dl,  = ton caractere que tu as calcule
int 21h

Reply

Marsh Posté le 13-12-2005 à 16:16:36    

oui merci ta méthode fonctionne... mais je n'arrive pas a convertir mon nombre hexa en décimal pour l'afficher en ASCII...
 
HELPPPP :'(

Reply

Marsh Posté le 14-12-2005 à 12:58:18    

par exemple
soit 41h entré
ah = '4' soit le caractère 4
al = '1' soit le caractère 1
mov bx, ax
sub bx, 3030h ;transforme le '4' en 4 et le '1' en 1
shl bh, 4        ;  soit 16 * 4
or bl, bh        ; code recherché en binaire soit 41h ou 65 décimal
bl est le code ascii à afficher avec la fonction int 21h et les paramètres dans les bons registres.
add bl, bh donne le même résultat (dans ce cas)
le 0 est codé 30h le 9 39h donc pour avoir un nombre il suffit d'oter 30h à son code ascii

Reply

Marsh Posté le 14-12-2005 à 12:58:18   

Reply

Marsh Posté le 14-12-2005 à 14:11:48    

tu fais une table "0,....,9,a,...,f"
et tu découpes ta valeur par pavés de 4 bits qui seront les indices dans cette table.

Reply

Marsh Posté le 14-12-2005 à 17:01:25    

bmjbe a écrit :

oui merci ta méthode fonctionne... mais je n'arrive pas a convertir mon nombre hexa en décimal pour l'afficher en ASCII...
 
HELPPPP :'(


Attends : t'as un nombre hexa, tu veux l'afficher en ASCII. Que vient faire le decimal dans l'histoire?

Reply

Marsh Posté le 15-12-2005 à 13:01:10    

Bonjour
je me suis un peu trompé en oubliant les chiffres a à f et A à F
donc
      sub bx,3030h
      cmp bl, 9h
      jc lbl1
      sub bl, 7h
      cmp bl, 10h
      jc lbl1
      sub bl, 20h
lbl1: cmp bh, 9
      jc lbl2
      sub bh, 7
      cmp bh, 10h
      jc lbl2
      sub bh, 20h
lbl2: or bl, bh
j'espère ne pas avoir fais d'erreur cette fois-ci

Reply

Sujets relatifs:

Leave a Replay

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