メモリ アドレスをバイト文字列に変換するルーチンを作成する必要があります。その文字列は、null で終わる文字列を出力する関数の入力になります (これは既に作成できました)。たとえば、アドレスが 0x1bf9 の場合、「1bf9」というテキストを画面に出力する必要があります。この本はまだ 32 ビット モードにはなっていませんが、そのためにも 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