Программы умножения двоичных чисел. Сдвиг множителя и текущей суммы частичных. Обнуление текущей суммы частичных произведений (ЧП), страница 2

;**************************  M16_16AF ***************************

; Подпрограмма умножения дробных беззнаковых двоичных чисел

; с фиксированной перед старшим разрядом запятой

; формата ( ,16)*( ,16)=( ,16), где  ( ,16)=(СТБ,МЛБ).  

; Входные параметры: (D,E) - адрес множимого в памяти,

;                                      (H,L) - адрес множителя в памяти.

; Выходные параметры: (В,С) - два старших байта произведения.

; Сохраняются (D,E), (H,L).

; Используется подпрограмма M16_16.

;****************************************************************

M16_16AF: 

PUSH   D

; Сохранение адреса множимого

PUSH   H

; Сохранение адреса множителя

; Пересылка множимого из памяти в (В,С)

XCHG

MOV   B, M

INX   H

MOV   C, M

; (В,С) - множимое

XCHG

; Пересылка множителя из памяти в (D,E)

MOV   D, M

INX   H

MOV   E, M

; (D,E) - множитель

; Умножение целых двоичных чисел 16*16=32

CALL   M16_16

; (В,С,Н,L) - произведение

; Округление СТБ,СРБ произведения

MOV   A, H

RAL

JNC   PER

INX   B

PER:

POP   H

POP   D

RET

Программы деления двоичных чисел