В журнале "Персональный компьютер БК-0010, БК-0011М" №2-1995 есть такая реализация умножения:
Код:
; Подпрограмма умножения
; 8-разрядных чисел
; R2-множимое, R3-множитель,
; R4-результат, R5-счетчик итераций
MUL: MOV #10, R5 ; Цикл из 8 итераций
CLR R4 ; Очистить аккумулятор результата
1: ASR R3 ; Очередной разряд множителя
ВСС 2 ; Если 0 - дальше
ADD R2, R4 ; Иначе прибавить множимое
2: ASL R2 ; Сдвиг множимого на один разряд
SOB R5, 1 ; Если не конец - в цикл
RET ; Выход
; Алгоритм этой программы построен совершенно аналогично
; правилу умножения «в столбик» для двоичных чисел
; и, видимо, в пояснениях не нуждается.
Вроде выглядит неплохо. Меня смутило только то, что заявлено умножение только 8-разрядных чисел. Как можно её модифицировать для 16-разрядных? Также я могу расковырять подпрограмму умножения из OMSI Pascal. Надо?
- - - Добавлено - - -
А хотя, скорее всего, OMSI Pascal юзает аппаратное умножение, он же для 1801BM2 и RT-11.