Команда коррекции деления для представления в кодах ASCII (команда AAO )
Все ранее описанные команды десятичной коррекции (ААА, DAA, AAS, DAS и ААМ) выполняли действия над результатом операции. В противоположность им команда AAD (ASCII adjust for division - скорректировать деление для представления в кодах ASCII) должна исполняться непосредственно перед операцией деления.
Команда ADD преобразует неупакованное делимое в двоичное значение и загружает его в регистр AL. Для этого она умножает старшую цифру делимого (содержимое регистра АН) на 10 и добавляет полученный результат к младшей цифре, находящейся в регистре AL. Затем она обнуляет содержимое регистра АН.
Приведем типичный пример применения команды AAD:
AAD ; Скорректировать неупакованное делимое в АН:АL,
DIV BL ; а затем выполнить деление
Индивидуальное задание.
- Вычислить произведение элементов с заданием согласно варианту и результат поместить в элемент с заданным номером (для вариантов с 32-битными числами берутся младшие части элементов) (табл.4 из лабораторной № 2).
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.
Краткие теоретические сведения.
1. Логические команды
2. Команды сдвига и циклического сдвига