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

;*************************  C10_16******************************

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

; без знака формата 4*4 в двоичное число формата 16.    

; Входные параметры: (В,С) - двоично-десятичное число ( Р3Р2Р3Р0).

; Выходные параметры: (H,L) - эквивалентное двоичное число.

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

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

; Вычисление выражения Q1=(P3*10+P2)

C10_16: 

MOV   А, B

; (A) - число (Р3Р2)

PUSH   В

CALL   С10_8

; (A) - двоичное число Q1

POP   B

; Вычисление выражения Q1*10

MVI   H, 0

MOV   L, A

; (H,L) - Q1

DAD   H

; (H,L) - Q1*2

PUSH   H

POP   D

; (D,E) - Q1*2

DAD   H

DAD   H

; (H,L) - Q1*8

DAD   D

; (H,L) - Q1*(8+2)

; Выделение цифры Р1

MOV   A, C

ANI   0F0H

; Маска на цифру

RRC

RRC

RRC

RRC

; (А) - цифра Р1

; Вычисление выражения Q2=(Q1*10+P1)

MVI   D, 0

MOV   E, A

DAD   D

(H,L) - Q2

; Вычисление выражения Q2*10

DAD   H

; (H,L) - Q2*2

PUSH   H

POP   D

; (D,E) - Q2*2

DAD   H

DAD   H

; (H,L) - Q2*8

DAD   D

; (H,L) - Q2*10

; Вычисление выражения  (Q2*10+P1)

MOV   A, C

ANI   0FH

; Маска на цифру

MVI   D, 0

MOV   E, A

DAD   D

; (H,L) - (((P3*10+P2)*10+P1)*10+P0)

RET