Неужели еще кто-то использует дос?
Вот для печати 16бит в десятичном виде.
print_number{ ; ax = число 0..65535, cl = 1 )печатать с ведущими нулями:.
xor dx,dx
div ax,10000
call L_print_digit
mov ax,dx
xor dx,dx
div ax,1000
call L_print_digit
mov ax,dx
xor dx,dx
div ax,100
call L_print_digit
mov ax,dx
xor dx,dx
div ax,10
call L_print_digit
mov ax,dx
mov cl,1
call L_print_digit
ret
;
L_print_digit{ ; al = digit, cl = display flag
test cl,cl
jnz L_print_digit_1
test al,al
jnz L_print_digit_1
ret
L_print_digit_1{
; если используется dx - сделать push/pop в этом блоке
add al,48
mov bl,al ; Параметры проверь - не помню в каких регистрах передается.
mov bh,87h ; white color
mov ah,1 ; точно не помню - стоит проверить. Ф-ия вывода одного символа.
int 21h
ld cl,1
ret
Код конечно не проверял - не на чем.
Для печати hex - придумай сам - еще проще.