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. Порядок выполнения работы.
Простейшей, чаще всего используемой командой процессора, является команда
|
MOV Operand_1, Operand_2 |
Данная команда копирует содержимое правого операнда в левый операнд.
Эта команда, равно как и практически все остальные команды, оперирующие парой операндов, удовлетворяет двум важным условиям:
|
Результат операции сохраняется в левом операнде. |
|
Ёмкости левого и правого операндов равны: Operand_1: 1 байт Operand_2: 1 байт или Operand_1: 2 байта Operand_2: 2 байта |
Для обозначения содержимого ячеек оперативной памяти при записи команд используются квадратные скобки. В квадратных скобках указывается не содержимое ячейки оперативной памяти, а адрес ячейки. Например:
|
[0150] − содержимое 1-байтовой ячейки оперативной памяти. 0150 − адрес 1-байтовой ячейки оперативной памяти. [BP] − содержимое 1-байтовой ячейки оперативной памяти. BP − регистр, содержащий адрес 1-байтовой ячейки памяти. |
Адрес в квадратных скобках может задаваться двумя различными способами:
|
|
Пример использования прямой адресации с однобайтовыми операндами:
|
MOV AL, [0150] До выполнения: [0150]= 9F
После выполнения: [0150]= 9F и AL= 9F |
Пример использования прямой адресации с двухбайтовыми операндами:
|
MOV AX, [0150] До выполнения: [0150]= 9F [0151]= 5A
После выполнения: [0150]= 9F [0151]= 5A и AX= 5A9F, то есть AL= 9F и AH= 5A |
Пример использования косвенной адресации с однобайтовыми операндами:
|
MOV AL, [SI] До выполнения: [0150]= 9F SI= 0150
После выполнения: [0150]= 9F SI= 0150 и AL= 9F |
Изменение порядка операндов отражается на результате следующим образом:
|
MOV [SI], AL До выполнения: AL= 9F SI= 0150
После выполнения: AL= 9F SI= 0150 и [0150]= 9F |
Пример использования косвенной адресации с двухбайтовыми операндами:
|
MOV AX, [SI] До выполнения: [0150]= 9F [0151]= 5A SI= 0150
После выполнения: [0150]= 9F [0151]= 5A SI= 0150 и AX= 5A9F, то есть AL= 9F и AH= 5A |
Практическое использование способов адресации (на примере команды 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 [0120], AX приводит к результату: [0120]= [0120] + AX = 0 + 1234 = 1234 ([0120]= 34 [0121]= 12 ) Третья команда ADD BX,[0120] приводит к результату: BX= BX + 1234= 1234 Трассировка второй группы команд даёт следующие результаты:
Вторая команда 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. Вопросы
зачета: