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

;***************************  D32_16  ****************************

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

; формата 32:16=16,16.

; Входные параметры: (Н,L,D,E) - делимое, (В,С) - делитель.

; Выходные параметры: (D,E) - частное, (Н,L) - остаток.

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

D32_16: 

MVI   A, 16

; Счетчик циклов

; Сдвиг влево остатка и частного в (Н,L,D,E)

CYCLE:

DAD   H

PUSH   PSW

; Сохранение счетчика, переноса

XCHG

DAD   H

XCHG

JNC   PER1

INX   H

; Учет переноса

; Вычитание делителя из остатка

JC   PER2

; Если разность <0

POP   PSW

; Восстановление счетчика

PER3:

INX   D

; Разряд частного = 1

JMP   PER4

; Проверка переноса от сдвига остатка

PER2:

POP   PSW

; Восстановление переноса

JC   PER3

; Если был перенос

; Восстановление остатка

DAD   B

; Проверка конца цикла

PER4:

DCR   A

JNZ   CYCLE

; Зацикливание

RET

;**************************  D16_16F ****************************

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

; формата ( ,16):( ,16)=( ,16).  

; Входные параметры: (H,L) - делимое, (В,С) - делитель.

; Выходные параметры: (D,E) - частное.

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

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

D16_16F:

CALL  D16_16A

; (D,E) - частное

RET