Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prakt3.doc
Скачиваний:
8
Добавлен:
12.02.2016
Размер:
165.38 Кб
Скачать

Системне програмування

Практична робота № 3

Машинні коди. Байт Способу Адресації.

В загальному, формат машинної команди можна представити наступним чином:

Префікс

Перепризначення сегменту

Код Операції

Байт способу адресації

Адреса

Дані

0/1

0/1

Завжди присутній

1

0/1

0,1,2

0,1,2

Позначення 0/1 означає відсутність/присутність даного поля в машинному коді або і його розмір в байтах.

Існують команди розмірності 1,2,3,4 байти.

Поле “Префікс” – для команд повтору рядкових операцій

REP/REPE/REPZ/REPNZ – повторює рядкову операцію визначену кількість разів безумовно, або по стану прапорця. Використовуються в якості префікса перед рядковими командами типу CMPS(порівняння рядків), MOVS(переміщення рядів). Наприклад:

MOV CX,20

Встановлення лічильника на 20 байт

LEA DI, STRING2

Адреса “куди” пересилати (відносно значення в регістрі ES)

LEA SI, STRING1

Адреса “звідки” пересилати (відносно значення в регістрі DS)

REP MOVSB

Переслати дані (породжений машинний код: CS:0101 F3

CS:0102 A4)

Значення в лічильнику команд не змінюється поки в CX не буде 0, а декремент відбувається автоматично.

Поле “Перепризначення сегменту” – присутній в командах, що використовують додаткове перевизначення сегментних регістрів.

Поле “Код Операції” (далі - КО) визначає яка саме дія буде виконуватися (+/-/MOV...)

Поле “Байт способу адресації” (БСА) :

Відсутній у таких випадках:

  • команда не має операндів;

  • один операнд регістр другий - безпосередні дані;

  • один операнд – адреса пам’яті, другий – регістр AX або AL (для акумулятора є спрощені команди, тому адресація інша);

  • в командах переходів (JMP);

  • в командах прямого вводу-виводу (IN-OUT).

Присутній, коли є непряма, пряма адресація.

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

Розрізняють такі види адресації:

  • Регістрова – всі операнди знаходяться в регістрах процесора;

  • Безпосередня – один з операндів є безпосередньо числом(даними);

  • Пряма – в одному з операндів команди вказується ім’я певної змінної (мітка), адреса в регістрі;

  • Непряма:

  • Базова

  • Індексна

  • Базово-індексна

Команди з прямою адресацією пам’яті працюють швидше, оскільки не потребують додаткового додавання при визначенні фізичної адреси

При непрямій адресації посилання на операнд визначається через базовий або індексний регістр, константи, змінні зміщення та прості змінні. Квадратні дужки, що визначають операнди при такій адресації діють як знак плюс.

Схема формування адреси при непрямій адресації:

Ці операнди можна комбінувати в довільній послідовності. Але не можна одночасно використовувати два базові регістри або два індексні регістри. Відповідно, можна побудувати 16 різних записів адресації.

При формуванні фізичної адреси базовий регістр BX у виді [BX] використовується разом з сегментним регістром DS, а базовий регістр BP у виді [BP] використовується разом з сегментним регістром SS. Індексні регістри SI та DI передбачають використання сегментного регістру DS.

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