x86 32bit windows assembly - quelques fonctions utiles et l'implementation d'une lib md5
Utilisation de https://github.com/rwfpl/rewolf-md5/blob/master/nasm/rewolf_md5.inc
Calcule la longueur d'une chaîne de caractères.
- Adresse de la chaîne de caractères dans ESI
- La valeur de retour est stockée dans EAX
mov esi, string_address
call strlen
- EAX
Convertit un nombre en une chaîne de caractères ASCII.
- Nombre dans EAX
- Adresse du tampon de résultat dans EDI (12 octets suffisent)
- La longueur de la chaîne de résultat sera stockée dans EAX sans le zéro final
mov eax, nombre
mov edi, result_buffer_address
call itoa
- EAX
Récupère le nième argument de l'application.
- Numéro d'argument dans EAX (1 pour le premier argument, 2 pour le deuxième, etc.)
- Retourne : pointeur de chaîne dans ESI, longueur de l'argument dans EAX
mov eax, n ; où n est le numéro d'argument
call getArg
- ESI, EAX
Convertit un octet en une chaîne hexadécimale de 2 caractères.
- Octet dans AL
- Résultat dans AH-AL (2 octets)
mov al, byte
call byte_to_hex
- AX
Convertit un tampon en une chaîne hexadécimale.
- Tampon source dans ESI
- Tampon de destination dans EDI
- Taille du tampon source dans ECX
- Fonction byte_to_hex requise
mov esi, source
mov edi, destination
mov ecx, source_size
call buffer_to_hex
- Aucun
- Le drapeau de direction sera défini sur 0
Les commentaires dans les fonctions sont en anglais.