Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.р.1-12.СПРГ-1(40, укр).doc
Скачиваний:
5
Добавлен:
27.08.2019
Размер:
2.33 Mб
Скачать

Лабораторна робота 3.

Тема: Способи адресації даних, команди пересилки даних.

Ціль: Вивчити склад директив і команд асемблера для визначення типів даних і розміщення значень змінних у пам'яті, стеку та регістрах мікропроцесора. Освоїти роботу з дебагером OllyDbg.

1. Підготовка до роботи.

Ознайомитися із директивами та командами асемблера для оголошення різних типів даних, та наявними способами адресації [1, стор. 30-47, 235-245], [3, стор. 136-142, 161].

2. Питання для самоконтролю.

  1. Яка модель пам'яті використовується при програмуванні в захищеному режимі?

  2. Призначення сегментних регістрів?

  3. Призначення РЗП?

  4. Які фундаментальні типи даних ви знаєте?

  5. Для чого використовуються логічні типи даних?

  6. Як оголосити масив даних?

  7. Які способи адресації ви знаєте?

3. Короткі теоретичні відомості.

МП intel допускають роботу в реальному, захищеному, віртуального V86 режимах. Кожний з цих режимів характеризується особливостями роботи з пам'яттю (див. лекцію). При роботі програми необхідні дані можуть знаходитися в зовнішній пам'яті, стеці або регістрах мікропроцесора. Від того, як будуть розміщені дані, у якому порядку вони будуть оброблятися, де будуть зберігатися проміжні результати, багато в чому залежить ефективність написаної програми. Мікропроцесор завжди поміщає дані для обробки в один з регістрів загального призначення, тому необхідно знати правила, по яких варто адресувати необхідні операнди. По можливості варто розташовувати дан у регістрах мікропроцесора, проміжні результати – у регістрах або стеці, результат – у регістрах, стеці або пам'яті. Вибір способу адресації визначається,:

- кількістю даних;

- місцем розміщення даних;

- наявністю вільних регістрів мікропроцесора;

- особливістю розв'язуваної задачі;

- зручністю використання.

Слід зазначити, що при описі будь-якої команди мікропроцесора використовуються мнемонічні позначення (мнемоніки) інструкцій (директив, команд) мовою асемблера, що являють собою скорочені англійські слова, наприклад mov від move, xchg від exchange, і т. п.

При написанні програми варто також пам'ятати, що в будь-яких інструкціях із двома операндами на місці першого операнда завжди знаходиться приймач (destination) результату або даних, а після коми, на місці другого операнда – джерело даних.

Способи адресації і правила використання регістрів і додаткових компонентів (бази, індексу, масштабу і зсуву) обчислення ефективної адреси приведені в таблицях 1 і 2.

Таблиця 1- Способи адресації (у дужках при використанні masm)

Спосіб адресації

Приклад запису

Регістрова адресація

mov ax, bx

Безпосередня адресація

mov ах,2

Пряма адресація (використовується рідко)

mov ax,[es:0001]

(mov ax, es:0001)

Непряма адресація

mov ax,[bx]

Варіанти непрямої адресації

Адресація по базі зі зсувом

(для роботи з одномірними масивами)

mov ax,[bx+2];

(mov ax,[bp]+2; mov ax,2[bp])

Непряма адресація з

масштабуванням

(тільки для розширених регістрів)

mov ax,[esi*2+2]

(mov ax,[esi*2]+2)

Адресація по базі з індексуванням (для роботи з двовимірними масивами)

mov ax, [bx+si+2]

(mov ax,[bx],[si+2]; mov ax,2[bx][si]; mov ax,[bx+2][si])

Адресація по базі з індексуванням і масштабуванням

mov ax,[cs: eax+ebx*2+2]

mov ax, cs:[eax+ebx*4+32]

Логічна адреса:

<сегментний регістр>:<16-розрядна ефективна адреса>

<селектор сегмента>:<32-розрядна ефективна адреса>

32- розрядна ефективна адреса ЕА:

ЕА=база + (індекс*масштаб) +зсув

Таблиця 2. – Припустимі значення

Компоненти ЕА

16-розрядна адреса

32-розрядна адреса

Базовий регістр

bх, bр

будь-який РЗП

Індексний регістр

si, di

будь-який РЗП, крім esp

Масштаб

немає

2,4,8

Зсув

0,8,16 біт

0,8,16,32 біта

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]