Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Умножение




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

 

.286

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

CODESG SEGMENT PARA 'Code'

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

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

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

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

BYTE1 DB 80H;Элементы данных

BYTE2 DB 40H

WORD1 DW 8000H

WORD2 DW 4000H

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

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

CALL C10MUL;Вызвать умнож. MUL

CALL D10IMUL;Вызвать умнож. IMUL

RET

MAIN ENDP

; Пример умножения MUL

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

C10MUL PROC

MOV AL,BYTE1;Байт * байт

MUL BYTE2;Произведение в АХ

MOV AX,WORD1;Слово * слово

MUL WORD2;Произведение в DX:AX

MOV AL,BYTE1;Байт * слово

SUB AH,AH;Расш. множ. в АН

MUL WORD1;Произведение в DX:AX

RET

C10MUL ENDP

; Пример умножения IMUL

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

D10IMUL PROC

MOV AL,BYTE1;Байт * байт

IMUL BYTE2;Произведение в АХ

MOV AX,WORD1;Слово * слово

IMUL WORD2;Произведение в DX:AX

MOV AL,BYTE1;Байт * слово

CBW;Расшир. множ. в АН

IMUL WORD1;Произвед. в DX:AX

RET

D10IMUL ENDP

CODESG ENDS

END BEGIN

 

В процедуре C10MUL дано три примера умножения: байт на байт, слово на слово и слово на байт. Первый пример команды MUL перемножает 80Н (128) на 40Н (64). Произведение 2000Н (8192) получается в регистре АХ.

Второй пример команды MUL генерирует 2000 0000Н в регистрах DX:AX.

Третий пример команды MUL перемножает слово на байт и требует расширения байта BYTE1 до размеров слова. Для расширения используется команда SUB, обнуляющая регистр АН. Произведение 0040 0000Н получается в регистровой паре DX:AX.

В процедуре D10IMUL используются те же три примера умножения, что и в процедуре C10MUL, но вместо команд MUL записаны команды IMUL.

Первый пример команды IMUL перемножает 80Н (отрицательное число) на 40Н (положительное число). Произведение Е000 получается в регистре АХ. Команда IMUL рассматривает 80Н как -128. В результате умножения -128 на +64 получается -8192 или шестнадцатиричное Е000.

Второй пример команды IMUL перемножает 8000Н (отрицательное значение) на 2000Н (положительное значение). Произведение Е000 0000 получается в регистрах DX:AX и представляет собой отрицательное значение.

Третий пример команды IMUL перед умножением выполняет расширение байта BYTE1 до размеров слова в регистре АХ. Так как значения предполагаются знаковые, то в примере используется команда CBW для перевода левого знакового бита в регистр АН: шестнадцатиричное 80 в регистре AL превращается в FF80 в регистре АХ. Поскольку множитель в слове WORD1 имеет также отрицательное значение, то

произведение будет положительным.

3.2. Выполнить ассемблирование и компоновку программы. Записать листинг программы в отчет. Вызвать отладчик DEBUG на выполнение программы.

3.3. Просмотреть сегмент кодов с помощью команды D CS:100 и определить в каких ячейках памяти записаны элементы данных программы. Выполнить трассировку программы, записывая выводы в отчет о выполнении каждой команды.

 





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


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


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

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

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

4320 - | 4158 -


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

Ген: 0.011 с.