* * *
Вторая программка (вернее, их две) реализует
быстрые алгоритмы деления и умножения больших чи-
сел. На их основе несложно написать п/п ввода деся-
тичных чисел в регистры (преобразование строки в
число).
Обозначение:
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. Такие вот дела...