Bonjour,
Tu peux convertir directement la valeur lue dans un registre en chaine
hexa : eax, par exemple correspond à 4 octets soit 8 caractères ascii.
Voici un petit bout de programme qui convertit un octet (placé dans al)
en deux caractères ascii placés dans al et ah.
al contiendra le caractère ascii correspondant au 4 bits de poids fort de l'octet et ah les 4 bits de poids faible.
Pour afficher le résultat tu peux placer ax dans une chaine de caractère
move [adresse mémoire],ax place les octets dans l'ordre poids fort, poids faible.
Tu termine ta chaine par un octet nul pour avoir une chaine asciiz et tu l'affiche par MessageBox.
hexascii:
;convertit la valeur mise dans al en 2 octets al et ah (al=poids fort,
ah=poids faible)
mov ah,al
shr al,4 ;lit les 4 bits de poids fort
cmp al,0x9 ;vérifie si numérique
jna num1 ;si <=9
add al,"A"-"0"-10 ;sinon ajoute 7
num1 and ah,0xf ;lit les 4 bits de poids faible
cmp ah,0x9
jna num2
add ah,"A"-"0"-10
num2 add ax,"00" ;rajoute "0"-0 à chacun des octets
ret
|