мяти необходима процедура преобразования адреса сегментированной (математической) памяти в адреса линейной физической памяти при каждом обращении к памяти.
Адрес объекта в сегментированной памяти задается двумя компонентами: базовым адресом сегмента и смещением в сегменте. В команде задается только смещение в сегменте. Базовый адрес сегмента задается содержимым одного из четырех сегментных регистров (рис. 3. 3).
МП IA-16 содержали четыре 16-разрядных сегментных регистра:
ES – регистр дополнительного сегмента данных,
CS – регистр сегмента кода,
SS – регистр сегмента стека,
DS – регистр сегмента данных,
19Базовые адреса сегментов430
00ES – Доп. сегмент данных0000
01CS – Сегмент кода0000
10SS – Сегмент стека0000
11DS – Сегмент данных0000
Рис. 3. 3. Сегментные регистры IA-16.
Использование регистров CS, SS, DS и ES возможно по умолчанию и с использованием префикса замены сегмента. Базовые адреса сегментов используются для преобразования адреса сегментированной памяти в адрес линейной.
Емкость физической памяти в МП IA-16 позволяет разместить одновременно до 16 полных сегментов по 64 Кбайт (216 байт). Но одновременно, без изменения содержимого сегментных регистров, в реальном режиме IA-16 можно обращаться только к четырем сегментам, по числу сегментных регистров.
Обращатся к другим сегментам (кроме кодовых сегментов), размещенным в оперативной памяти можно:
при помощи загрузки базовых адресов в соответствующие сегментные регистры командами пересылки (mov),
при помощи команд загрузки сегментных регистров (LES, LDS и LSS).
Все операции со стеком ориентированы на словарную организацию стека. По этой причине адрес указателя стека и базовый адрес сегментного регистра SS должны быть четными.
Переход
Страницы: << < 5 | 6 | 7 | 8 | 9 > >>