Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
met.doc
Скачиваний:
14
Добавлен:
30.04.2019
Размер:
1.92 Mб
Скачать

Основные понятия Теоретические основы адресации памяти в реальном режиме

Данные, над которыми процессор выполняет свои операции, могут располагаться как в регистрах, так и в оперативной памяти компьютера. Для работы с памятью используются шина адреса и шина данных (см. рис. 3.1).

Рис. 3.1. Организация взаимодействия процессора и оперативной памяти

Физически память устроена таким образом, что возможно обращение к отдельным байтам, 16-разрядным словам (два смежных байта памяти), 32-разрядным двойным словам (четыре смежных байта памяти). Максимальный размер данных определяется разрядностью шины данных и режимом работы процессора. В современных персональных компьютерах шина адреса 32-разрядная, но в реальном (16-разрядном) режиме работы процессора максимальный размер обрабатываемых данных – 16 бит, т.е. слово.

Важной характеристикой оперативной памяти является ее объем, т.е. количество доступных байт памяти. Оперативное запоминающее устройство (ОЗУ) на логическом уровне рассматривается как непрерывная последовательность байт. Каждый байт в этой последовательности имеет свой порядковый номер, называемый физическим адресом ячейки памяти. Для доступа к определенной ячейке памяти на шину адреса выставляется ее физический адрес.

Разрядность шины адреса определяет максимальный объем оперативной памяти. В современных персональных компьютерах шина адреса так же 32-разрядная, и, следовательно, процессор имеет возможность одновременно обращаться к 232 = 4 Гбайт оперативной памяти. Однако в реальном режиме работы из шины адреса используется только 20 младших разрядов. Таким образом объем адресуемой памяти в реальном режиме работы процессора составляет 220 = 1 Мбайт.

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

00000H  [физический адрес]  ffffFh.

Здесь и далее буква "h", записанная после числа, подчеркивает, что данное число записано в шестнадцатеричной системе счисления.

Однако все регистры процессора в реальном режиме 16-разрядные. Возникает проблема представления 20-разрядного физического адреса памяти при помощи 16-разрядных регистров.

Для разрешения этой проблемы используется двухкомпонентный логический адрес. Логический адрес состоит из 16-разрядных компонент: компоненты сегмента памяти и компоненты смещения внутри сегмента.

Для получения 20-разрядного физического адреса к сегментной компоненте (сегменту) приписываются справа четыре нулевых двоичных разряда (для расширения до 20 разрядов), затем полученное число складывается с компонентой смещения (см. рис. 3.2). Перед сложением к компоненте смещения (смещению) слева дописываются четыре нулевых бита (так же для расширения до 20 разрядов).

Логический адрес принято записывать в форме <сегмент : смещение>.

Например, пусть у нас есть логический адрес 1234h:0123h. Сегментная компонента равна 1234h, а компонента смещения – 0123h. Вычислим физический адрес, соответствующий нашему логическому адресу:

  1. расширяем до 20 бит сегментную компоненту, дописывая справа 4 нулевых бита, получаем число 12340h (здесь четыре двоичных разряда представляются одним шестнадцатеричным разрядом);

  2. расширяем до 20 бит компоненту смещения, дописывая справа 4 нулевых бита, получаем число 00123h;

  3. для получения физического адреса складываем полученные числа:

12340h + 00123h = 12453h.

Рис. 3.2. Формирование 20-разрядного физического адреса

Одному физическому адресу может соответствовать несколько логических. Например, полученному нами физическому адресу 12453h соответствует логический 1245h:0003h.

Фактически в схеме адресации памяти реального режима первый мегабайт памяти как бы разбивается на сегменты. Физический адрес начала сегмента (базовый адрес сегмента) равен расширенному до 20 бит сегментной компоненте адреса.

Сегменты могут начинаться только с физического адреса, который кратен 16 байтам. Поэтому он может начинаться только с границы параграфа (один параграф – это 16 идущих подряд байта). Компонента смещения при такой схеме адресации является смещением внутри сегмента памяти, а сам сегмент задается сегментной компонентой адреса (см. рис. 3.3).

Логический адрес в реальном режиме должен находиться в следующих пределах: 0000h:0000h  [логический адрес]  FFFFh:000Fh.

Архитектура современных процессоров фирмы Intel, работающих в реальном режиме, предполагает хранение сегментной компоненты адреса в сегментных регистрах: CS – сегмент кода; DS – сегмент данных; ES – дополнительный сегмент данных; SS – сегмент стека.

Компонента смещения логического адреса текущей исполняемой команды всегда располагается в указателе команд IP, а компонента смещения логического адреса вершины стека в регистре SP. Компонента смещения логического адреса ячейки памяти, рассматриваемой как данные, может располагаться в регистрах BX, BP, SI, DI.

Рис. 3.3. Схема адресации в реальном режиме

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