Описание процессора i8086 для программиста


Сегментация


Микропроцессор 8086 для формирования 20-разряного физического адреса использует 16-разрядные селекторы сегментов и смещения.

Селекторы сегментов

хранятся в сегментных регистрах (см. подраздел 2.3.2 “Сегментные регистры”). В зависимости от того, с какой целью выполняется обращение к памяти, процессор использует один из четырёх имеющихся селекторов сегментов. Так, если обращение производится для выборки кода команды, используется селектор сегмента кода, хранящийся в регистре CS, а если происходит запись данных в стек – селектор сегмента стека из регистра SS.

Смещение

формируется в процессе выполнения команды и определяет местоположение требуемой информации внутри сегмента. Например, при выборке кода команды производится чтение байта памяти, хранящегося по смещению из регистра IP (см. подраздел 2.3.4 “Указатель инструкции”) в сегменте кода, селектор которого находится в регистре CS. Поскольку смещение является 16-разрядным, размер сегмента ограничен 64 Кбайтами.

Физический адрес

вычисляется путём сложения 16-разрядного смещения с селектором соответствующего сегмента, сдвинутым влево на четыре разряда. Так как селектор сегмента является 16-разрядной величиной, сдвиг преобразует его в 20-разрядное число, младшие четыре разряда которого содержат нули. Схематически это можно представить следующим образом:

-----T----T----T----¬

     ¦  с м е щ е н и е  ¦

     L----+----+----+-----

+

-----T----T----T----T----¬

¦  с е л е к т о р  ¦0000¦

L----+----+----+----+-----

--------------------------

-----T----T----T----T----¬

¦    физический адрес    ¦

L----+----+----+----+-----

Перенос, который может возникнуть из старшего (19-го) разряда физического адреса в процессе сложения, игнорируется[1]. Таким образом, при доступе к слову памяти, расположенному по смещению 000F16 в сегменте с селектором FFFF16, физический адрес младшего байта этого слова будет равен FFFFF16, а старшего – 0000016.

Легко заметить, что для доступа к одной и той же физической ячейке памяти могут использоваться различные комбинации селекторов и смещений.


- Начало -  - Назад -  - Вперед -