Команда коррекции деления для представления в кодах ASCII (команда AAO )

Все ранее описанные команды десятичной коррекции (ААА, DAA, AAS, DAS и ААМ) выполняли действия над результатом операции. В противопо­ложность им команда AAD (ASCII adjust for division - скорректировать деление для представления в кодах ASCII) должна исполняться непосредственно перед опера­цией деления.

Команда ADD преобразует неупакованное делимое в двоичное значение и загружает его в регистр AL. Для этого она умножает старшую цифру делимого (содержимое регистра АН) на 10 и добавляет полученный результат к младшей цифре, находящейся в регистре AL. Затем она обнуляет содержимое регистра АН.

Приведем типичный пример применения команды AAD:

AAD ; Скорректировать неупакованное делимое в АН:АL,

DIV BL ; а затем выполнить деление

 

Индивидуальное задание.

  1. Вычислить произведение элементов с заданием согласно варианту и результат поместить в элемент с заданным номером (для вариантов с 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. Команды сдвига и циклического сдвига