Imprimindo valores hexadecimais na montagem x86

Eu preciso fazer uma rotina que irá converter um endereço de memória em uma seqüência de bytes. Essa seqüência seria, então, a entrada para uma função que imprime cadeias terminadas em nulo (que eu já era capaz de fazer). Por exemplo, se eu tiver um endereço 0x1bf9, preciso imprimir o texto "1bf9" na tela. O livro ainda não entrou no modo de 32 bits, mas deu a entender que precisaríamos disso também. Isto é o que eu tenho até agora:

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

questionAnswers(2)

yourAnswerToTheQuestion