«Умножение целых двоичных чисел без знак формата 8*8=16»
Метод умножения: 8 циклов сдвигов множителя и текущей суммы частичных произведений влево.
Входные параметры: (С) – множитель (Х), (Е) – множимое (У).
Выходной параметр: (H,L) – произведение, используются все регистры, сохраняются (С), (Е).
| адрес
| машинный
код
| метка
| мнемокод
| примечание
| | загрузка сомножителей
| |
| 0E XX
|
| MVI C,XX
| Загрузка множителя (Х)
| |
| 1E YY
|
| MVI E,YY
| Загрузка множимого (У)
| |
| CD5008
|
| CALL Y8N
| вызов программы умножения
| |
| FF
|
| RST 7
| Переход к программе «Монитор»
| | обнуление регистров произведения
| |
| AF
| Y8N
| XRA A
| Обнуление А, CY=0
| |
|
|
| MOV H,A
| Обнуление H
| |
| 6F
|
| MOV L,A
| Обнуление L
| |
|
|
| MOV D,A
| Обнуление D
| | проверка сомножителей на 0
| |
|
|
| ADD E
| (A)ß(A)+(E)
| |
| C8
|
| RZ
| Возврат, если Y =0
| |
| AF
|
| XRA A
| Обнуление А, CY=0
| |
|
|
| ADD C
| (A)ß(A)+(C)
| |
| C8
|
| RZ
| Возврат, если X=0
| |
|
|
| MOV H,C
| Загрузка множителя в (H)
| | 085A
|
|
| MVI B,8
| Загрузка счетчика циклов
| | сдвиг множителя и суммы частичных произведений влево
| | 085C
|
| M1
| DAD H
| (H,L)ß(H,L)+(H,L)
| | 085D
| D26108
|
| JNС M2
| Переход на M2, если разряд Х=0 (CY)=0
| | сложение множимого с текущей суммой частичных произведений
| |
|
|
| DAD D
| (H,L)ß(H,L)+(D,E)
| | проверка конца цикла
| |
|
| M2
| DCR B
| (B)ß(B)-1
| |
| C25C08
|
| JNZ M1
| Переход на М1, если Z=0
| |
| C9
|
| RET
| возврат в основную программу
|

|