      title d-hex.asm
code  segment  'CODE' PUBLIC
      assume cs:code
      extrn display : far

main  proc  far
      push  ds
      mov   ax,0
      push  ax

      mov   ax,ddd
      mov   ds,ax
      assume ds:ddd

      mov   si,0     ; начальное двоичное значение
      mov   cx,16    ; сколько раз увеличить и вывести
      lea   bx,table ;  установка таблицы перекодировки
next: mov   dx,si    ;  значение двоичного кода для перекодировки
      Call  hex      ; собственно перекодировка и печать

      mov   dl,' '    ; печать разделителя
      call  display
      inc   si
      loop  next
      ret
main  endp
;---------------
hex   proc
      push  dx
      lea   bx,table
      mov   al,dl  ; первый полу байт
      clc
      shr   al,1
      shr   al,1
      shr   al,1
      shr   al,1
      xlatb
      mov   dl,al
      call  display
      pop   ax             ; второй полу байт
      and   al,00001111b
      xlatb
      mov   dl,al
      call display
      ret
hex   endp
;============
code  ends
ddd   segment
table db  '0123456789ABCDEF'
ddd   ends

      end main