Читайте также:
|
|
Все ранее описанные команды десятичной коррекции (ААА, 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.
Первая цифра варианта | ||||||||||
КОН1 | ||||||||||
КОН2 | ||||||||||
КОН3 |
Таблица 2.
Вторая цифра варианта | ||||||||||
оп1 | / | * | — | + | * | + | — | — | / | — |
оп2 | * | / | * | / | — | + | / | * | + | + |
оп3 | + | + | / | * | + | * | + | / | — | / |
оп4 | — | + | — | — | / | / | * | + | * | * |
Таблица 3.
Третья цифра варианта | ||||||||||
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.
Дата добавления: 2015-11-13; просмотров: 55 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Индивидуальное задание. | | | Логические команды OR, AND и XOR. |