Conversion chaine / nombre

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

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.