Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Деление




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

 

.286

TITLE EXDIV (COM) Пример операций DIV и IDIV

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 16H

WORD1 DW 2000H

WORD2 DW 0010H

WORD3 DW 1000H

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

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

CALL D10DIV;Вызов п/п DIV

CALL E10IDIV;Вызов п/п IDIV

CALL F10SHR;Вызов п/п SHR

RET

MAIN ENDP

; Примеры с командой DIV

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

D10DIV PROC

MOV AX,WORD1;Слово / байт

DIV BYTE1;ост:частное в AH:AL

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

SUB AH,AH;расшир. делимое а АН

DIV BYTE2;ост:частное в AH:AL

MOV DX,WORD2;Двойное слово / слово

MOV AX,WORD3;делимое в DX:AX

DIV WORD1;ост:частное в DX:AX

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

SUB DX,DX;расшир. делимое в DX

DIV WORD3;ост:частное в DX:AX

RET

D10DIV ENDP

; Пример с командой IDIV

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

E10IDIV PROC

MOV AX,WORD1;Слово / байт

IDIV BYTE1;ост:частное в AH:AL

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

CBW;расшир. делимое в АН

IDIV BYTE2;сот:частное в AH:AL

MOV DX,WORD2;Двойное слово / слово

MOV AX,WORD3;Делимое в DX:AX

IDIV WORD1;ост:частное в DX:AX

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

CWD;расшир. делимое в DX

IDIV WORD3;ост:частное в DX:AX

RET

E10IDIV ENDP

; Пример деления на степень

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

F10SHR PROC

MOV AX,256

SHR AX,1;Деление на 2

MOV CL,3

SHR AX,CL;Деление на 8

RET

F10SHR ENDP

CODESG ENDS

END BEGIN

 

В процедуре D10DIV дано четыре примера деления: слова на байт, байта на байт, двойного слова на слово и слова на слово. Первый пример команды DIV делит 2000Н (8092) на 80Н (128). В результате остаток 00 получается в регистре АН, а частное 40Н (64) - в регистре AL.

Во втором примере команды DIV выполняется прежде расширение байта BYTE1 до размеров слова. Так как здесь предполагается беззнаковая величина, то в примере левый бит регистра АН равен нулю. В результате деления остаток - 12Н получается в регистре АН, а частное 05Н - в регистре AL.

Третий пример команды DIV генерирует остаток 1000Н в регистре DX и частное 0080Н в регистре АХ.

В четвертом примере команды DIV сначала выполняется расширение слова WORD1 до двойного слова в регистровой паре DX:AX. После деления остаток 0000Н получится в регистре DX, а частное 0002Н – в регистре АХ.

В процедуре E10IDIV используются те же четыре примера деления, что и в процедуре D10DIV, но вместо команд DIV записаны команды IDIV. Первый пример команды IDIV делит 2000Н (положительное число) на 80Н (отрицательное число). Остаток деления 00Н получается в регистре АН, а частное - С0 (-64) - в регистре AL.

Шестнадцатиричные результаты трех остальных примеров деления следующие:

 

Пример команды IDIV Остаток Частное

 

2 ЕЕ (-18) FB (-5)

3 1000 (4096) 0080 (128)

4 0000 0002

 

Процедура F10SHR показывает пример деления на степень числа 2 (2,4 и т.д.).

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

7.3. Выполнить трассировку программы внимательно отслеживая содержимое регистров AX и DX. Выводы о работе программы записать в отчет.

 





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


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


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

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

Жизнь - это то, что с тобой происходит, пока ты строишь планы. © Джон Леннон
==> читать все изречения...

2335 - | 2116 -


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

Ген: 0.008 с.