Assembler: логічні та фізична адреси
Для обчислення адреси застосовуються дві складові адреси - зміщення і секція. Коли для адресації застосовуються адреси змінних або мітки, то відомо, в якому сегменті вони визначені. Для обчислення адреси застосовується адреса початку даного сегменту та зміщення змінної з цим ім'ям або мітки відносно початку сегмента. Дане зміщення іменується виконавчою адресою, і воно обчислюється залежно від режиму адресації. У цьому випадку у відповідний сегментний регістр повинне бути завантажене необхідне значення, інакше дані будуть пересилатися абсолютно в інші комірки пам'яті. При потребі в команді є можливість перевизначити відповідний сегмент. Для цієї цілі є можливість застосовувати два методи:
- можна скористатися псевдооператором assume, щоб вказати який сегмент буде застосовуватися за замовчуванням при зверненні до пам'яті.
- в команді безпосередньо є можливість вказати по відношенню, до якого сегменту буде застосовуватися зміщення.
Фізична адреса являє собою двадцатибітне беззнакове ціле, яке ідентифікує розташування байту в просторі пам'яті. Логічна адреса являє собою два шістнадцятибітних беззнакових цілих: базова (вихідна) адреса сегменту і ефективна адреса (зміщення), яка визначає відстань в байтах від осередку, що адресується до початку сегменту.
Програма оперує логічним адресою, а не фізичною, отже, при зверненні до пам'яті для запису зчитування даних або вибірки команди, відбувається апаратне перетворення логічної адреси у фізичну адресу. Мікропроцесор (МП) розширює сегментний регістр чотирма нульовими бітами і додає зміщення, яке отримано при обчисленні адреси. Правила перетворення залежать від режиму роботи мікропроцесора - захищеного і реального. У звичайному режимі роботи мікропроцесора логічна адреса безпосередньо подається на шину адреси, іншими словами збігається з фізичною адресою. У захищеному режимі роботи мікропроцесора, правила отримання логічної адреси відрізняються від реального режиму, а при застосуванні сторінкової організації пам'яті логічні адреси можуть значно відрізнятися від фізичних адрес.