план

Лабораторная работа № 8

"Исследование работы отладчика ДОС DEBUG - Способы адресации на примере простейших команд"

1. Цель работы: Знакомство со способами адресации микропроцессора i8086 на примере простейших команд.

2 Литература:

2.1 Приложение к лабораторной работе.

2.2 Конспект лекций по курсу “Архитектура КС”.

2.3 Электронный вариант работы.

3. Оборудование: Персональный компьютер АТ.

4. Техника безопасности:

4.1 На рабочем месте вести себя спокойно;

4.2 ЗАПРЕЩАЕТСЯ :

•  вытаскивать из гнезд, разъемов и панелек комплектующие материнской платы;

•  перемыкать металлическими предметами выводы микросхем и других комплектующих материнской платы;

•  отламывать, отвинчивать и отковыривать комплектующие материнской платы.

5. Подготовка к работе.

5.1 Перед выполнением работы необходимо ответить на следующие вопросы допуска :

5.1.1 Поясните - режим адресации ?

5.1.2 Режимы адресации данных - перечислите.

5.1.3 Режимы адресации переходов - перечилите.

6. Порядок выполнения работы.

  1. Введение;
  2. Простейшая команда;
  3. Прямая адресация;
  4. Косвенная адресация;
  5. Практическое использование способов адресации (на примере команды MOV);
  6. Практическое использование способов адресации (на примере команды ADD);
  7. Задания к лабораторной работе.


Команда MOV:

Адрес начала команды

Команда, записанная на языке машинных кодов

Та же самая команда, записанная на языке ассемблер

Комментарий, поясняющий, как выполняется команда

100

B8 34 12

MOV AX,1234

НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ:

Занесение 2-х байтового числа 1234 (12 – старший байт числа, 34 – младший байт числа) в 2-х байтовый регистр АХ

103

A3 20 01

MOV [0120],AX

ПРЯМАЯ АДРЕСАЦИЯ:

Копирование 2-х байтового числа, находящегося в АХ, в однобайтовые ячейки оперативной памяти 0120 и 0121

(в 0120 копируется младший байт АХ, в 0121 копируется старший байт АХ)

106

8B 1E 20 01

MOV BX,[0120]

ПРЯМАЯ АДРЕСАЦИЯ:

Копирование содержимого ячеек оперативной памяти 0120 и 0121, в 2-х байтовый регистр ВХ (в младший байт ВХ, регистр BL, копируется содержимое ячейки 0120, в старший байт ВХ, регистр BH, копируется содержимое ячейки 0121)

10A

BD 38 01

MOV BP,0138

НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ:

Занесение 2-х байтового числа 0138 в 2-х байтовый регистр BP

10D

88 46 00

MOV [BP+00],AL

КОСВЕННАЯ АДРЕСАЦИЯ:

Копирование однобайтового числа, находящегося в АL, в однобайтовую ячейку оперативной памяти, адрес которой содержится в регистре BP, т.е. в ячейку с вычисляемым адресом 0138 (0138+00=0138)

110

89 46 07

MOV [BP+07],AX

КОСВЕННАЯ АДРЕСАЦИЯ:

Копирование 2-х байтового числа, находящегося в АХ, в ячейки оперативной памяти, на адреса которых указывает регистр BP:

младший байт регистра АХ, именуемый АL, копируется в ячейку с вычисляемым адресом 013F (0138 + 07 + 0 = 013F)

старший байт регистра АХ, именуемый АН, копируется в ячейку с вычисляемым адресом 0140 (0138 + 07 + 1 = 0140)

113

CD 20

INT 20

Команда завершения работы программы



Команда ADD:

Адрес начала команды

Команда, записанная на языке машинных кодов

Та же самая команда, записанная на языке ассемблер

Комментарий, поясняющий, как выполняется команда

100

05 34 12

ADD AX,1234

НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ:

Сложение 2-х байтового числа 1234 (12 – старший байт числа, 34 – младший байт числа) и содержимого 2-х байтового регистра АХ. Результат размещается в регистре АХ.

103

01 06 20 01

ADD [0120],AX

ПРЯМАЯ АДРЕСАЦИЯ:

Сложение 2-х байтового числа, находящегося в АХ, с 2-х байтовым числом, расположенном в ячейках оперативной памяти 0120 и 0121

(с содержимым ячейки 0120 складывается содержимое младшего байта АХ, а с содержимым ячейки 0121 складывается содержимое старшего байта АХ).

Результат размещается в ячейках 0120 и 0121.

107

03 1E 20 01

ADD BX,[0120]

ПРЯМАЯ АДРЕСАЦИЯ:

Сложение содержимого ячеек оперативной памяти 0120 и 0121 с содержимым 2-х байтового регистра ВХ (к младшему байту регистра ВХ, регистру BL, добавляется содержимое ячейки 0120, а к содержимому старшего байта регистра ВХ, регистра BH, добавляется содержимое ячейки 0121).

Результат размещается в регистре BX.

10B

BD 38 01

MOV BP,0138

НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ:

Занесение 2-х байтового числа 0138 в 2-х байтовый регистр BP

10E

00 46 20

ADD [BP+20],AL

КОСВЕННАЯ АДРЕСАЦИЯ:

Сложение однобайтового числа, находящегося в АL, с содержимым 1-байтовой ячейки оперативной памяти, адрес которой определяется как сумма содержимого регистра BP и смещения 20, т.е. с содержимым ячейки с вычисляемым адресом 0158 (0138+20=0158).

Результат размещается в ячейке 0158.

111

01 46 E0

ADD [BP-20],AX

КОСВЕННАЯ АДРЕСАЦИЯ:

Сложение 2-байтового числа, находящегося в AX с содержимым ячеек оперативной памяти, адреса которых вычисляются как BP-20:

младший байт регистра АХ, именуемый АL, складывается с содержимым ячейки, вычисляемый адрес которой определяется как следующая сумма: 0118 (0138 - 20 +0 = 0118)

старший байт регистра АХ, именуемый АН, складывается с содержимым ячейки с вычисляемым адресом 0119 (0138 - 20 + 1 = 0119)

Результат размещается в ячейках 0118 и 0119.

114

CD 20

INT 20

Команда завершения работы программы

Трассировка представленного выше кода :

Позволяет проследить как выполняется операция сложения.


Первая команда ADD AX,1234 приводит к тому, что AX= 0+1234= 1234

Вторая команда ADD [0120], AX приводит к результату: [0120]= [0120] + AX = 0 + 1234 = 1234 ([0120]= 34 [0121]= 12 )

Третья команда ADD BX,[0120] приводит к результату: BX= BX + 1234= 1234

Трассировка второй группы команд даёт следующие результаты:


Первая команда MOV BP,138 приводит к результату: BP= 0138

Вторая команда ADD [BP+20],AL приводит к результату: адрес= 0138 + 20 = 0158. Далее, [0158]= [0158] + AL = 0 + 34= 34

Третья команда ADD [BP-20],AX приводит к результату: адрес= 0138 - 20 = 0118. Далее, [0118]= [0118] + AL = 0 + 34= 34 и [0119]= [0119] + AH = 0 + 12= 12


7. Содержание отчета.
7.1. Номер, название и цель работы;
7.2. Практическое использование способов адресации (на примере команды MOV) - команда и комментарий;

 

8. Вопросы зачета:

  1. Тестовый контроль знаний.