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