Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




Данные, над которыми процессор выполняет свои операции, могут располагаться как в регистрах, так и в оперативной памяти компьютера. Для работы с памятью используются шина адреса и шина данных (см. рис. 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 разрядов).

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

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

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

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

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

12340 h + 00123 h = 12453 h.

 

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

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

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

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

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

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

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

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

Режимы адресации

Набор команд процессоров фирмы Intel обеспечивает выполнение операций над операндами, которые находятся в регистрах, памяти и непосредственно в команде. В набор входят безадресные, которые не имеют операндов, одно- и двухадресные команды (по количеству операндов). Для одноадресных команд операнд может располагаться в регистре или в памяти. Для двухадресных команд возможны следующие схемы расположения операндов:

– регистр — регистр;

– регистр — память;

– память — регистр;

– регистр — непосредственные данные;

– память — непосредственные данные.

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

Рассмотрим следующие режимы адресации реального режима:

– регистровая адресация;

– непосредственная адресация;

– прямая адресация;

– косвенная адресация;

– адресация по базе;

– индексная адресация;

– базово-индексная адресация.

В табл. 3.1 приведены форматы операндов языка ассемблера для всех семи режимов адресации, реализуемых процессором в реальном режиме, и для каждого формата указано, какой из сегментных регистров по умолчанию используется для вычисления физического адреса. Обратите внимание, что во всех режимах предполагается доступ к сегменту данных (т.е. сегментным регистром служит регистр DS), и только в тех случаях, когда используется регистр ВР, предполагается доступ к сегменту стека (т.е. сегментным регистром служит регистр SS).

Таблица 3.1

Форматы операндов

Режим адресации Формат операнда Сегментный регистр
Регистровый AL, AH, AX BL, BH, BX CL, CH, CX DL, DH, DX SP BP SI DI Не используется
Непосредственный Данное Не используется

Окончание табл. 3.1

Режим адресации Формат операнда Сегментный регистр
Прямой Сдвиг Метка DS DS
Косвенный [BX] [BP] [DI] [SI] DS SS DS DS
По базе [BX + сдвиг] [BP + сдвиг] DS SS
Индексная [DI + сдвиг] [SI] + сдвиг DS DS
Базово-индексная [BX + SI + сдвиг] [BX + DI + сдвиг] [BP + SI + сдвиг] [BP + DI + сдвиг] DS DS SS SS

Регистровая адресация

В данном режиме процессор принимает данные из регистра или помещает данные в регистр. При этом данные могут быть восьмиразрядными (в этом случае используются 8 восьмиразрядных регистров общего назначения: AL, AH, BL, BH, CL, CH, DL и DH), а также шестнадцатиразрядными (используются 8 шестнадцатиразрядных регистра общего назначения: AX, BX, CX, DX, SP, BP, SI, и DI).

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...