Печать шестнадцатеричных значений в сборке x86

Мне нужно сделать процедуру, которая преобразует адрес памяти в строку байтов. Затем эта строка будет входом для функции, которая печатает строки с нулевым символом в конце (что я уже смог сделать). Например, если у меня есть адрес 0x1bf9, мне нужно напечатать текст1bf9" на экран. Книга не имеетя еще не перешел в 32-битный режим, но намекнул, что он нам тоже понадобится. Это то, что я до сих пор:

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

Ответы на вопрос(2)

Ваш ответ на вопрос