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
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.