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

Страницы работы

Содержание работы

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

;****************************  M8_8  *****************************

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

; формата 8*8=16.

; Входные параметры: (А) - множитель, (Е) - множимое.

; Выходной параметр: (Н,L) - произведение.

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

M8_8:

MOV   H, A

; (Н) - множитель

; Обнуление регистров (D), (L)

MVI   D, 0

MVI   L, 0

MVI   B, 8

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

; Сдвиг множителя и текущей суммы частичных

; произведений (ЧП) влево

CYCLE:

DAD   H

JNC   PER

; Если разряд множителя = 0

; Сложение множимого с текущей суммой ЧП

DAD   D

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

PER:

DCR   B

JNZ   CYCLE

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

RET

;***************************  M16_8  *****************************

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

; формата 16*8=24.

; Входные параметры: (А) - множитель, (D,Е) - множимое.

; Выходные параметры: (А,Н,L) - произведение.

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

M16_8:

LXI   H, 0

; Обнуление суммы частичных

; произведений (ЧП)

LXI   B, 8

; (В)=0, (С)=8 - счетчик циклов

; Сдвиг текущей суммы ЧП и множителя влево

CYCLE:

DAD   H

ADC   A

JNC   PER

; Сложение множимого с текущей суммой ЧП

DAD   D

ADC   B

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

PER:

DCR   C

JNZ   CYCLE

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

RET

;**************************  M16_16*****************************

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

; формата 16*16=32.

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

; Выходные параметры: (В,С,Н,L) - произведение.

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

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

; Обнуление текущей суммы частичных произведений (ЧП)

M16_16:

XRA   A

MOV   H, A

MOV   L, A

; Умножение множимого на МЛБ множителя

MOV   A, C

PUSH   B

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

CALL  M16_8

; (A,H,L) - произведение 1 (ПР1)

; Сохранение ПР1

XTHL

; Сохранение СРБ, МЛБ ПР1

; (H,L) - множитель

PUSH   PSW

; Сохранение СТБ ПР1

; Умножение множимого на СТБ множителя

MOV   A, H

; (А) - СТБ множителя

CALL  M16_8

; (A,H,L) - произведение 2 (ПР2)

; Сложение сдвинутых на 8 разрядов ПР1 и ПР2

MOV   B, A

; (В) - СТБ ПР2

POP   PSW

; (А) - СТБ ПР1

ADD   H

MOV   C, A

; (С) - сумма СТБ ПР1 и СТБ ПР2

JNC   PER2

INR   B

; Учет переноса в СТБ

PER2:

MOV   H, L

; (Н) - МЛБ ПР2

MVI   L, 0

POP   D

; (D,E) - СРБ, МЛБ ПР1

DAD   D

RNC

INX   B

; Учет переноса в СТБ

RET

;**************************  M16_16F ****************************

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

; формата   ,16 ´ ,16 = ,16 . 

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

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

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

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

M16_16F: 

CALL   M16_16

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

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

MOV   A, H

RAL

JNC   PER

INX   B

PER:

RET

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

Похожие материалы

Информация о работе

Тип:
Написанные программы на языках программирования
Размер файла:
511 Kb
Скачали:
0