Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2024-02-15 | 75 |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
Имея две отдельные команды умножения, микропроцессор 8x86 имеет и две отдельные команды деления. Команда DIV (divide - разделить) выполняет деление чисел без знака, а команда IDIV (integer divide - разделить целые числа) выполняет деление чисел со знаком. Эти команды имеют формат
DIV источник
IDIV источник
где источник - делитель размером в байт или слово, находящийся в регистре общего назначения или в ячейке памяти. Делимое должно иметь двойной размер; оно извлекается из регистров АН и AL (при делении на 8-битовое число) или из регистров DX и АХ (при делении на 16-битовое число). Результаты возвращаются следующим образом:
Если операнд-источник представляет собой байт, то частное возвращается в регистре AL, а остаток в регистре АН.
Если операнд-источник представляет собой слово, то частное возвращается в регистре АХ, а остаток - в регистре DX.
Обе команды оставляют состояние флагов неопределенными, но если частное не помещается в регистре-приемнике (AL или АХ), то микропроцессор 8x86 сообщает Вам об этом весьма драматическим образом: он генерирует прерывание типа 0 (деление на 0).
Переполнение результата деления возникает при следующих условиях:
1. Делитель равен 0.
2. При делении байтов без знака делимое по меньшей мере в 256 раз превышает делитель.
3. При делении слов без знака делимое по меньшей мере в 65 536 раз превышает делитель.
4. При делении байтов со знаком частное лежит вне диапазона от -128 до +127.
5. При делении слов со знаком частное лежит вне диапазона от -32768 до 32767. Приведем несколько типичных примеров операций деления:
DIV BX ;Разделить DX:AX на ВХ , без знака
DIV MEM_BYTE ;Разделить AH:AL на байт памяти, без знака
IDIV DL ;Разделить АН:AL на DL со знаком
|
IDIV MEM_WORD ;Разделить DX:AX на слово памяти, со знаком
Команды DIV и IDIV не позволяют прямо разделить на непосредственное значение; его надо предварительно загрузить в регистр или ячейку памяти. Например, команды
MOV ВХ,20
DIV ВХ
разделят объединенное содержимое регистров DX и АХ на 20.
Команда коррекции деления для представления в кодах ASCII (команда AAO )
Все ранее описанные команды десятичной коррекции (ААА, DAA, AAS, DAS и ААМ) выполняли действия над результатом операции. В противоположность им команда AAD (ASCII adjust for division - скорректировать деление для представления в кодах ASCII) должна исполняться непосредственно перед операцией деления.
Команда ADD преобразует неупакованное делимое в двоичное значение и загружает его в регистр AL. Для этого она умножает старшую цифру делимого (содержимое регистра АН) на 10 и добавляет полученный результат к младшей цифре, находящейся в регистре AL. Затем она обнуляет содержимое регистра АН.
Приведем типичный пример применения команды AAD:
AAD ; Скорректировать неупакованное делимое в АН:АL,
DIV BL ; а затем выполнить деление
Индивидуальное задание.
2. Каждому студенту выдается 4-хзначный вариант. Согласно этому варианту вычислить следующее выражение:
F = (КОН1 оп1 КОН2) оп2 Х оп3 ( Y оп4 КОН3)
где
КОН1, КОН2, КОН3 – числовые константы, согласно табл. 1
оп1, оп2, оп3, оп4 – операции сложения, вычитания, умножения и деления согласно табл. 2
X, Y – переменные, тип которых определяется согласно табл. 3
Числовые константы из табл. 1 берутся согласно первой цифре варианта, операции сложения и вычитания из табл. 2 – согласно второй цифре варианта, а размер и тип переменных – из табл. 3 согласно третьей цифре варианта.
|
Таблица 1.
Первая цифра варианта | ||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
КОН1 | 12 | 12569 | 8735 | 12 | 78 | 4596 | 12563 | 4589 | 369 | 458 |
КОН2 | 1369 | 12 | 588 | 96385 | 47 | 589 | 78 | 29 | 3856 | 481 |
КОН3 | 3699 | 4589 | 12 | 3698 | 4862 | 2385 | 2852 | 5625 | 336 | 36 |
Таблица 2.
Вторая цифра варианта | ||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
оп1 | / | * | — | + | * | + | — | — | / | — |
оп2 | * | / | * | / | — | + | / | * | + | + |
оп3 | + | + | / | * | + | * | + | / | — | / |
оп4 | — | + | — | — | / | / | * | + | * | * |
Таблица 3.
Третья цифра варианта | ||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
X | char | un char | int | un int | int | un char | int | char | char | un int |
Y | int | un int | char | un char | int | un int | int | int | char | un char |
Примечания: – char – 8 битн. со знаком
– un. char – 8 битн. без знака
– int – 16 битн. со знаком
– un. int – 16 битн. без знака
Пример. У студента индивидуальный вариант 990. Строим индивидуальное выражение для вычисления:
F=(458 – 481) + X / (Y * 36)
Согласно варианту переменные X, Y и Z должны быть описаны следующим образом
char x;
int y;
Ассемблерный фрагмент выглядит следующим образом:
mov bx, 458h // Пересылаем константу в регистр AX
sub bx, 481h // Вычитаем константу
mov ax,y
mov cx,36h
imul cx // Пренебрегаем старшей частью 32-б рез-та
mov cx,ax
mov al,x
cbw // Расширяем число X до 16 бит
cwd // расширяем x до 32 бит
|
idiv cx // результат в ax
add bx,ax
mov f,cx
Содержание отчета :
1. Название работы
2. Цель работы
3. Приборы и оборудование
4. Краткие теоретические сведения
5. Индивидуальное задание
6. Распечатанный текст программы
7. Выводы.
Вопросы к защите лабораторной работы.
1. Форматы арифметических данных.
2. Формат и правила применения команд MUL и IMUL.
3. Воздействие на флаги команд MUL и IMUL.
4. Формат и правила применения команд DIV и IDIV.
5. Воздействие на флаги команд DIV и IDIV.
6. Правила применения команд AAO и AAM.
Лабораторная работа №5
«Изучение команд манипулирования битами»
Цель работы: изучить форматы и правила работы с командами манипулирования битами микропроцессора i8086.
Оборудование: IBM - совместимый персональный компьютер, работающий под управлением операционной системы, совместимой с MS-DOS®.
Программное обеспечение: Программа DEBUG.
|
|
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!