Conversion chaine / nombre

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 001 fois - Téléchargée 28 fois

Contenu du snippet

Avec cette petite routine pour NASM, vous pourrez convertir un nombre sous forme de chaine de caractères au format hexadécimal en valeur numérique. Par exemple:

"5A" devient 5Ah
"FF" devient FFh
etc...

Pour l'utiliser, il faut lui mettre dans EBX l'adresse de la chaine (2 caractères). En sortie, AL contiendra le nombre.

Source / Exemple :


; ebx contient l'adresse de la chaine (2 caractères)
; al contiendra le nombre

; pour comprendre on prend la chanie "5A"

Hex2Int:

push dword ecx               ; sauve le registre ECX

mov ch, byte[ebx]             ; ah <- "5"
mov cl, byte[ebx+1]           ; al <- "A"

mov ah, ch
sub ah, "0"                   ; ah <- 5      ("5"-"0")

mov al, cl
sub al, "0"                   ; al <- 0Ah    ("A"-"0")

shl ah, 4                     ; ah <- 0101 0000

or al, ah                     ; al <- 0101 1010 = 5A (al or ah)

pop ecx                     ; récupère ECX

ret                              ; quitte la sous-routine

; al contient donc bien le nombre sous forme numérique

Conclusion :


Cette routine à été écrite pour NASM, mais bon ,je compte sur vous pour la transformer pour les autres assembleurs...

Nemesis

A voir également

Ajouter un commentaire Commentaire
Messages postés
52
Date d'inscription
dimanche 6 décembre 2009
Statut
Membre
Dernière intervention
23 janvier 2014

stp vous n'aurez po par hasard le même algorithme avec la convention 16 bits

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.