Zootella
Messages postés252Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention 5 septembre 2006
-
19 juin 2005 à 18:17
Zootella
Messages postés252Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention 5 septembre 2006
-
20 juin 2005 à 17:47
Hello all,
dans un programme, celui-çi test la valeur d'un registre :
cmp dword ptr [eax],4550h
je voudrais faire des tests et afficher cette valeur dans une messagebox
cs_Nasman
Messages postés202Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention29 septembre 20083 20 juin 2005 à 09:48
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