BDOS    EQU  #0005        ; Aдрес, нужный для доступа к BDOS
                          ;
        LD   HL,12        ; В регистре HL содержатся младшие два байта вы-
        LD   DE,0         ; водимого числа, а в регистре DE - старшие два
                          ; байта
        LD   BC,0         ; Очистка ячеек памяти, нужных для перевода чис-
        LD   (METKA),BC   ; ла из шестнадцатеричного вида в десятичный
        LD   (METKA+2),BC ;
        LD   C,#20        ; В регистре С - число 20h  (п о ч е м у!?)
LOOP1:  ADD  HL,HL        ; Сложение  и  сдвиги необходимы  для установки
        RL   E            ; флага  C  регистра флагов, а следовательно, и 
        RL   D            ; для увеличения содержимого регистра E,a затем 
        PUSH HL           ; и регистра D .
        LD   HL,METKA     ; Считывание предыдущих результатов  вычислений
        LD   B,#04        ; и (при выполнении условия переполнения регист-
ZAPOL:  LD   A,(HL)       ; ра D) увеличениe их содержимого
        ADC  A,A          ; Обратите внимание на эту команду: она увеличи-
        DAA               ; вает содержимое регистра А  при установленном
        LD   (HL),A       ; флаге C
        INC  HL           ;
        DJNZ ZAPOL        ;
        POP  HL           ;
        DEC  C            ; Уменьшение значения цикла.
        JR   NZ,LOOP1     ; На выходе  из  этого  цикла в ячейках METKA І
                          ; METKA+3 будет лежать Ваше число в  десятичном
                          ; виде
        LD   BC,#0410     ; ПервыЙ байт - данные для работы цикла, второй 
                          ; байт нужен для коррекции кода числа
        LD   HL,METKA+3   ; Число выводится со старшего байта
PRINT:  LD   A,(HL)       ; Блок печати числа
        RRA               ;
        RRA               ;
        RRA               ;
        RRA               ; "Переворачивание" числа...
        CALL POLBYTE      ; ...и переход на печать младшего полубайта
        LD   A,#01        ; Проверка, последняя ли это цифра
        SUB  B            ;
        JR   NZ,STEK      ; Если выводимая цифра является последней и она-
        LD   C,A          ; - нуль, то вывод символа "нуль"
STEK:   LD   A,(HL)       ;
        DEC  HL           ;
        CALL POLBYTE      ; Переход на печать старшего полубайта
        DJNZ PRINT        ;
        RET               ; К о н е ц  программы
POLBYTE:AND  #0F          ; "Отрезание" младшего полубайта
        JR   Z,SUMMA      ; Если это число - нуль, то - печать символа 
                          ; "пробел"
        LD   C,#00        ; Иначе - печать самого числа WWWWWWY
SUMMA:  OR   #30          ; Получение кода данного числа      V
        SUB  C            ; Корректирование кода       ░WWWWWW[
WYWOD:  PUSH AF           ; Сохранение содержимого всех регистров
        PUSH BC           ;
        PUSH DE           ;
        PUSH HL           ;
        LD   E,A          ; Печать числа по коду (из регистра E)
        LD   C,#02        ;
        CALL BDOS         ;
        POP  HL           ;
        POP  DE           ;
        POP  BC           ;
        POP  AF           ;
        RET               ;
METKA:  DEFS 4            ; Область памяти,необходимая для арифметических
