Professional Documents
Culture Documents
AC Lab4 Chaykovsky 33V
AC Lab4 Chaykovsky 33V
Лабораторна робота №4
Виконав:
студент групи ДА-82
факультету «ІПСА»
Чайковський В.В.
Варіант 33 (3)
Київ – 2020
Завдання
Частина 1. Адресація в «реальному» режимі.
1. Скласти схему обчислення адресу процесорів архітектури х86.
2. Пояснити призначення регістрів ЦПУ, використовуваних для
адресації.
Частина 2. Дослідження способів адресації даних:
1. Визначити склад і пояснити призначення засобів обчислення адресу
даних.
2. Перерахувати способи адресації даних і пояснити їх особливості.
3. Скласти схеми обчислення адресу для різних способів адресації
даних.
Частина 3. Написати і відлагодити програму, що виконує дії, вказані в
таблиці. Для адресації елементів масиву використовувати непрямі режими
адресації. Програма має містити процедуру, яка обробляє вихідні
параметри зі стеку. Навести приклади використання різних способів
адресації даних і команд в програмі, зафіксувавши вміст відповідних
регістрів і адрес пам’яті.
Варіант Завдання
Опис прапорів:
Системні регістри. Використовуються для забезпечення роботи
захищенного режиму мікропроцесора, тому не часто використовуються
програмістами.
Способи адресації.
1. Безпосередня адресація.
Операнд вказується безпосередньо у полі команди, наприклад:
mov ax, 312 ; 312 задається безпосередньо
2. Регістрова адресація.
Операнд знаходиться в одному з регістрів. Наприклад, обидва операнди у
команді
mov ds, dx
задаються за допомогою регістрового способу адресації.
3. Непряма адресація.
Адрес операнду знаходиться в одному з регістрів – SI, DI, BX, BP.
Наприклад, команда
mov ax, [si]
поміщує у регістр AX слово з комірки пам’яті, зміщення якої вказано у
регістрі SI. Другий операнд заданий за допомогою непрямої адресації. У
сучасних поколіннях процесорів для використання непрямої адресації
можна також використовувати регістри EAX, EBX, ECX, EDX, ESI, EBP
та ESP.
4. Пряма адресація.
Абсолютний адрес операнду можна задати у вигляді
СЕГМЕНТ:ЗМІЩЕННЯ, де СЕГМЕНТ – адрес сегменту на який вказує
якийь сегментний регістр (CS, DS, SS або ES), а ЗМІЩЕННЯ – адрес
операнду відносно сегментного регістру (відносна адреса)
Приклади:
5. Базова адресація
Адрес операнду формується складанням вмісту базового регістру (BP або
BX) та зміщенням. Якщо зміщення не задано, то розуміється нульове
значення зміщення.
Якщо використовується BP, то адрес відповідного операнду
відраховується відносно сегменту, на який вказує регістр SS.
Якщо використовується BX, то адрес відраховується відносно сегменту, на
який вказує регістр DS.
Наприклад, команда:
поміщує у регістр AX слово, яке знаходиться у сегменті, вказаному в DS,
зі зміщенням на два більше, ніж число з BX.
Базова адресація має багато альтернативних форм. Таким чином,
еквівалентними формами є:
6. Індексна адресація
Цей метод адресації схожий на попередній, тільки адрес операнду
формується складанням вмістимого індексного регістру (SI або DI) та
зміщення.
У індексній адресації можна використовувати множник 1, 2,4, або 8 щоб
прочитати елемент рівний відповідно – байту, слову, подвійному слову,
або четвірному слову. Це називається масштабуванням індексного
регістру.
Приклади:
7. Базова-індексна адресація.
Адрес операнду формується складанням вмістимого базового регістру (BP
або BX) та індексного регістру (SI або DI), зі зміщенням, якщо воно
вказано.
Якщо використовується регістр BP, то адрес відраховується відносно
сегменту, на який вказує регістр SS. В іншому випадку цей адрес
відраховується відносно сегменту, на який вказує регістр DS.
Приклади:
8. Адресація за базою з індексацією та масштабуванням.
Це загальна схема адресації, в яку входять всі випадки, які були розглянуті
попередньо як частні. Адрес формується як сума зміщення, бази та
індексу, причому сума може бути скорегована за допомогою масштабного
множника:
Практична частина
Після теоретичного ознайомлення зі способами адресації в асемблері,
наведемо живі приклади використання деяких методів адресації.
Задамо масив даних:
1. Безпосередня адресація
2. Регістрова адресація
3. Неявна адресація
4. Індексна адресація