на апаратному рівні блок пам'яті. p align="justify"> Кожна програма в загальному випадку може складатися з будь-якої кількості сегментів, але безпосередній доступ вона має тільки до трьох основних сегментах (коду, даних і стека), а також додатковому сегменту даних. Програма ніколи не знає, за якими фізичним адресами будуть розміщені її сегменти. Цим займається операційна система. Операційна система розміщує сегменти програми в оперативній пам'яті за певним фізичним адресами, після чого поміщає значення цих адрес в певні місця. Куди саме, залежить від режиму роботи процесора. Так, в реальному режимі ці адреси поміщаються безпосередньо у відповідні сегментні регістри, а в захищеному режимі вони розміщуються в елементи спеціальної дескрипторної таблиці. Усередині сегменту програма звертається до адресами щодо початку сегменту лінійно, тобто, починаючи з нуля і закінчуючи адресою, рівним розміру сегмента. Цей відносний адресу, або зсув, який процесор використовує для доступу до даних усередині сегмента, називається ефективним. br/>
ПЕОМ 80386реальний режим (як 16-ти разів. 8086) захищений режімвіртуальний режим (як 8086, але підкоряється захищеного режиму) 16-ти розрядний (80286) 32-ох розрядний Малюнок 1.2 - Режими роботи процесора 80386.
У режимі реальної адресації мікропроцесор реалізує сегментну організацію пам'яті, при якій фізична адреса комірки пам'яті формується шляхом додавання базової адреси сегмента і відносного адреси осередку всередині сегмента.
Так як мікропроцесор оперує логічними адресами, що складаються з сегмента і зміщення, а оперативна пам'ять працює з лінійними адресами, виникає необхідність перетворення логічного адреси в лінійний фізичний. Цією роботою займається СФА. Для отримання фізичної адреси СФА зрушує 16-ти бітний сегмент вліво на 4 розряди (тим самим, множачи його на 16) і додає до цього числа 16-ти бітове зсув. У результаті виходить 20-ти бітний лінійний фізичну адресу, необхідний для роботи з оперативною пам'яттю. На малюнку 1.3 показаний приклад обчислення 20-ти бітного лінійного фізичної адреси. p align="justify"> Таким чином, базовий адреса визначається вмістом 16-розрядного сегментного регістра. 20-розрядний базова адреса формується шляхом зсуву вмісту сегментного регістра на чотири розряду вліво, молодші чотири розряди базової адреси заповнюються нулями. p align="justify"> Лінійний адресу утворюється за допомогою складання 20-розрядного базової адреси і 16-розрядного відносного адреси. Отриманий 20-розрядний лінійний адреса видається процесором на магістраль як фізичну адресу для вибірки відповідного байта. p align="justify"> ФІЗИЧНИЙ АДРЕСА = СЕГМЕНТ * 16 + ЗСУВ:
В
Малюнок 1.3 - Приклад формування фізичної адреси
1.3 Аналіз способів адресації операндів і алгоритмів виконання заданого підмножини команд <...