Salut,
Je cherche à faire un convertisseur hexa vers decimal, mais je bloque complet pour le moment. Faire un convertisseur dec2hex était simple, j'ai pu faire un truc vraiment propre, mais pour l'inverse, c'est beaucoup plus compliqué, de part le faite que le proc calcul en hexa...
Je n'arrive à comprendre psychiquement comment réussir à déterminer chaque numéro de la valeur décimal finale, afin que ce soit écrit en décimal et non en hexa..
Par exemple, pour le chiffre hexa 0xFFF
Le premier "F" = 15, donc le numéro décimal des unitées sera forcément 5.
Par contre, pour la suite, c'est là que je bloque.
Au début j'avais simplement pensé à récupérer mon script dec2hex, en remplaçant simplement le (*10) par un (*16):
F = 15
F = 15 x 16 = 240
F = 15 x (16*16) = 3840
etc..
3840 + 240 + 15 = 4095
Efficace et tient sur peu de lignes de code.
Mais j'ai vite compris que le registre calculerait en hexa, et que donc je ne pourrais rien faire du résultat final ! x |
Dans mon script dec2hex, j'entre une valeur dans eax, qui est écrite sous forme hexa..
Par exemple:
mov eax,0x12345678
Et en sortie je récupère ceci dans eax: 0xBC614E
C'est vraiment niquel et je souhaiterais faire pareil en hex2dec... Entrer une valeur en hexa dans un registre et la récupérer convertie en decimal dans un registre.
Je n'ai pas d'intérêt à pousser à une valeur décimal qui dépasserait 4 bytes (sous forme hexa), donc je n'utilise ni variable locale, ni pile. Ce qui donne un code vraiment dynamique et court.
Il faut donc pouvoir déterminer unité, dizaine, centaine etc.. Numéro par numéro, car dès l'instant qu'une addition ou une multiplication est faite, le registre va la renvoyer sous forme hexa !!
This is the big problem ^
La seule solution que j'imagine là avant d'aller faire dodo c'est de créer un compteur, mais franchement ça craint, et pas facile à implémenter en plus de ça.
Je pense que je vais aller dans cette direction demain, à moins que vous connaissiez une méthode plus simple par calcul pur, mais c'est justement ça le problème, je ne vois comment ça peut être possible de faire ça par du calcul de part la nature de calcul du proc ! x |
Partager