Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Многословное умножение




5.1. Запишите в текстовом редакторе NORTON программу exmult2.asm в СОМ-формате:

 

.286

TITLE EXMULT2 (COM) Пример команд умножения

CODESG SEGMENT PARA 'Code'

ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG

ORG 100H;Начало в конце PSP

BEGIN: JMP SHORT MAIN;Обход через данные

;-------------------------------------------------------

MULTCND DW 3206H;Элементы данных

DW 2521H

MULTPLR DW 6400H

DW 0A26H

PRODUCT DW 0

DW 0

DW 0

DW 0

;--------------------------------------------------------

MAIN PROC NEAR;Основная процедура

CALL E10XMUL;Вызвать 1 4-е 0 умножение

CALL Z10ZERO;Очистить произведение

CALL F10XMUL;Вызвать 2 4-е 0 умножение

RET

MAIN ENDP

; Умножение дв. слова на слово

; ----------------------------

E10XMUL PROC

MOV AX,MULTCND+2;Умнож. прав. сл.

MUL MULTPLR;множимого

MOV PRODUCT+4,AX;Записать произв.

MOV PRODUCT+2,DX

MOV AX,MULTCND;Умножить лев. сл.

MUL MULTPLR;множимого

ADD PRODUCT+2,AX;Сложить с полученным ранее

ADC PRODUCT,DX

RET

E10XMUL ENDP

; Перемножение двух двойных слов

; ------------------------------

F10XMUL PROC

MOV AX,MULTCND+2;Слово-2 множимого

MUL MULTPLR;* слово-2 множителя

MOV PRODUCT+6,AX;Сохранить рез.

MOV PRODUCT+4,DX

MOV AX,MULTCND+2;Слово-2 множимого

MUL MULTPLR;* слово-1 множителя

ADD PRODUCT+4,AX;Сложить с пред.

ADC PRODUCT+2,DX

ADC PRODUCT,00;Прибавить перенос

MOV AX,MULTCND;Слово-1 множимого

MUL MULTPLR+2;* слово-2 множителя

ADD PRODUCT+4,AX;Сложить с пред.

ADC PRODUCT+2,DX

ADC PRODUCT,00;Прибавить перенос

MOV AX,MULTCND;Слово-1 множимого

MUL MULTPLR;* слово-1 множителя

ADD PRODUCT+2,AX;Сложить с пред.

ADC PRODUCT,DX

RET

F10XMUL ENDP

; Очистка области результата

; --------------------------

Z10ZERO PROC

MOV PRODUCT,0000

MOV PRODUCT+2,0000

MOV PRODUCT+4,0000

MOV PRODUCT+6,0000

RET

Z10ZERO ENDP

CODESG ENDS

END BEGIN

 

Процедура E10XMUL умножает двойное слово на слово. Множимое MULTCND состоит из двух слов, содержащих соответственно 3206Н и 2521Н. Определение данных в виде двух слов (DW) вместо двойного слова (DD) обусловлено необходимостью правильной адресации для команд MOV, пересылающих слова в регистр АХ. Множитель MULTPLR содержит 6400Н. Область для записи произведения PRODUCT состоит из трех слов. Первая команда MUL перемножает MULTPLR и правое слово поля MULTCND; произведение 0Е80 Е400 записывается в PRODUCT+2 и PRODUCT+4. Вторая команда MUL перемножает MULTPLR и левое слово поля MULTCND, получая в результате 138А 5800. Далее выполняется сложение двух произведений следующим образом:

 

PRODUCT PRODUCT+2 PRODUCT+4

Произведение 1: 0000 0E80 E400

DX AX

Произведение 2: 138A 5800

-----------------------------

PRODUCT PRODUCT+2 PRODUCT+4

Результат: 138A 6680 E400

 

Так как первая команда ADD может выработать перенос, то второе сложение выполняется командой сложения с переносом ADC. Если команда ADD не дала перенос, то команда ADC выполняется также как и ADD. Если команда ADD дала перенос, то команда ADC выполняет сложение и прибавляет к полученной сумме 1.

Умножение двух двойных слов в процедуре F10XMUL включает следующие четыре операции умножения:

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 437 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Неосмысленная жизнь не стоит того, чтобы жить. © Сократ
==> читать все изречения...

2285 - | 1991 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.