Для однобайтовых значений я использовал их для преобразования в строку и использования функции bios ...
Раньше было что-то вроде этого:
mov ah, 0
mov al, ds:["yourvalueaddress"]
mov di, 100 ;temporary string address
mov cx, 0
cmp ax, 0
jge label1
mov bl, 45
mov ds:[di], bl
add di, 1
neg ax
label1:
mov bx, 10
label2:
add cx, 1
mov dx, 0
idiv bx
push dx
cmp ax, 0
jne label2
label3:
pop dx
add dx, 30h
mov ds:[di], dl
add di, 1
add cx, -1
cmp cx, 0
jne label3:
mov dl, 24h ;ENDL
mov ds:[di], dl
mov dx, 100 ;100 => temporary string address
mov ah, 09h
int 21h