                 *  *  *


     Вторая программка (вернее, их две) реализует
быстрые алгоритмы деления и умножения больших чи-
сел. На их основе несложно написать п/п ввода деся-
тичных чисел в регистры (преобразование строки в
число).

Обозначение:


MUL_HLBC_DE : Регистры HLBC=HLBC*DE


DIV_HLBC_DE : Регистры HLBC=HLBC/DE


     Точки входа MUL16 и DIV16, как и следует из
названия, выполняют умножение и деление 16-битных
чисел. Причем, если умножается 16 бит на 16, то в
результате получается 32 бита.

;====================================
;       16-BIT MULTIPLY
;====================================
MUL16:   LD      HL,0 
MUL_HLBC_DE:
        LD      A,B 
        LD      B,11H 
        JR      L4928 
L4921:   JR      NC,L4924 
        ADD     HL,DE 
L4924:   RR      H 
        RR      L 
L4928:   RRA 
        RR      C 
        DJNZ    L4921 
        LD      B,A 
        RET 
;====================================
;       16-BIT DIVIDE
;====================================
DIV16:   LD      HL,0 
DIV_HLBC_DE:
        LD      A,B 
        LD      B,10H 
        RL      C 
        RLA 
L493B:   RL      L 
        RL      H 
        JR      C,L494E 
        SBC     HL,DE 
        JR      NC,L4946 
        ADD     HL,DE 
L4946:   CCF 
L4947:   RL      C 
        RLA 
        DJNZ    L493B 
        LD      B,A 
        RET 
L494E:   OR      A 
        SBC     HL,DE 
        JR      L4947 


                 *  *  *


     Ну вот, вроде бы и все на сегодня. Да, чуть
не забыл: все эти программки написал где-то году в
1983 не кто иной, как Тим Патерсон, автор MSX-DOS
и первой версии MS-DOS. Такие вот дела...


