Byte to Ascii

Voir le sujet précédent Voir le sujet suivant Aller en bas

Byte to Ascii

Message  PapaBango le Mar 27 Sep - 12:53

Bonjour à tous.

Voilà, la question est dans le titre...
En fait j'ai une chaine Hexa (en prenant en compte seuls les bytes non nuls) dans un buffer, par exemple:

A l'adresse 00406000 j'ai une valeur, de 6 bytes (1DWORD+1WORD), placée dans un Buffer: 0Bh,03h,F5h,C2h,D4h,A0h,00h,00h. J'aimerais convertir ce buffer en chaine ascii à l'identique, pour obtenir cette chaine: "0B03F5C2D4A0" (qui correspondrait normalement à
30h,42h,30h,33h,46h,35h,43h,32h,44h,34h,41h,30h ).

Je ne sais si j'ai été assez clair?

Je sais qu'il existe déjà des macros pour convertir un Dword en chaine, j'ai utilisé ça:

invoke dw2hex, HexBuffer, addr AsciiBuffer

Par rapport à l'exemple ci-dessus, avec cette fonction, je n'arrive à afficher que ça: 0B03F5C2 ... il manque le word tongue

Mon souci est que ça ne prend que la valeur d'un DWORD, donc pour 1 Dword+ 1 word, ça ne convient pas.
Ma question: existe-t-il des solutions "prêtes à l'emploi" pour obtenir des chaines de longueurs supèrieures à 1 DWORD?

Merci pour votre aide Wink

PapaBango

Messages: 6
Date d'inscription: 20/05/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Byte to Ascii

Message  bifur le Mar 27 Sep - 22:49

a ta place je dévellopperait ta propre macro pour afficher un seul octet que j'utillisserais 6 fois pour afficher un seul octet par exemple:


Code:

affhex:        ;affiche le contenu de al en hexadécimal

mov ah,al
and ax,0F00Fh
shr ah,4        ;dans ah se trouve alors les 4 MSB et dans al les 4 LSB

add al,"0"          ;on ajoute alors aux deux registre la valeur ascii du zéro
add ah,"0"          ;pour obtenir le caractère ascii corespondant a la valeur numéraire qui se trouve dans le registre

cmp al,"9"          ;par contre comme le caractère A ne succède pas au carractère 9 on doit réajuster si la valeur correspond a une lettre
jle pasajl 
add al,"A"-"9"    ;de mémoire c'est un truc comme ça mais c'est a vérifier
pasajl:

cmp ah,"9"          ;idem pour le MSB
jle pasajl 
add ah,"A"-"9"    ;idem c'est a vérifier
pasajl:

;insérer ici une fonction qui affiche le caractère contenu dans ah (MSbs en premier)

;insérer ici une fonction qui affiche le caractère contenu dans al  (LSBs en dernier)



on peut très bien aussi stocker les caractère dans une chaine et ne tous les afficher qu'as la fin

bifur

Messages: 50
Date d'inscription: 21/05/2010

Voir le profil de l'utilisateur http://bofur.olympe-network.com

Revenir en haut Aller en bas

Re: Byte to Ascii

Message  PapaBango le Mer 28 Sep - 18:49

Merci de ta réponse, et du coup c'est ce que j'ai fait. Je me suis bidouillé une petite routine pour l'occasion et pour si peu , je peux aussi utiliser deux fois la fonction dw2hex Wink et placer les bytes un à un dans une chaîne en ignorant les bytes de 00h.
Mais je voulais savoir s'il n'existait pas une fonction ayant déjà ce rôle.

Merki





PapaBango

Messages: 6
Date d'inscription: 20/05/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum