L'impression que les valeurs hexadécimales en x86 assemblée

J'ai besoin de faire une routine qui vous permet de convertir une adresse de mémoire dans une chaîne d'octets. Cette chaîne serait alors l'entrée d'une fonction qui imprime null chaînes (dont j'étais déjà capable de faire). Par exemple, si j'ai une adresse 0x1bf9 j'ai besoin d'imprimer le texte "1bf9" à l'écran. Le livre n'est pas allé en 32 bits mode encore, mais ça a un peu laissé entendre que nous aurions besoin pour cela aussi. C'est ce que j'ai à ce jour:

TABLE:
db "0123456789ABCDEF", 0

STRING:
db 0

hex_to_char:
    lea bx, TABLE
    mov ax, dx

    mov ah, al ;make al and ah equal so we can isolate each half of the byte
    shr ah, 4 ;ah now has the high nibble
    and al, 0x0F ;al now has the low nibble
    xlat ;lookup al's contents in our table
    xchg ah, al ;flip around the bytes so now we can get the higher nibble 
    xlat ;look up what we just flipped
    inc STRING
    mov [STRING], ah ;append the new character to a string of bytes
    inc STRING
    mov [STRING], al ;append the new character to the string of bytes

    ret
Vous avez une question?
double possible de l'Impression Chiffres Hexadécimaux de l'Assemblée

OriginalL'auteur Hugo | 2013-09-18