Afficher valeur registre ?

Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006 - 19 juin 2005 à 18:17
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Derniè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



j'esseye :



push 0

push 0

push eax

push 0

call MessageBox



Mais ça bug, une solution ?



Merci.

6 réponses

ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
19 juin 2005 à 20:52
Salut,
la messagebox affiche du texte,pas un nombre.Voir Winhelp pour sa syntaxe.
ToutEnMasm
0
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006
19 juin 2005 à 21:08
Comment convertir un nombre en texte alors ? winhelp, msdn ?
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
19 juin 2005 à 22:48
Il faut utiliser dwtoa().

+2(p - n)
0
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006
19 juin 2005 à 23:18
Merci ça marche, ça donne le nombre en décimal seulement, y'a t'il une fonction de conversion décimal -> hexa ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
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

ret
0
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006
20 juin 2005 à 17:47
Merci !
0
Rejoignez-nous