- •Сегмент – это логическая единица памяти с максимальным размером в 64 Кбайта (мин. Размер – 16 байт), накладываемая на те или иные участки памяти.
- •Физический адрес в реальном режиме получается следующим образом:
- •Сегментный адрес Смещение Физический адрес (20-ти разрядный)
- •Суммирование со сдвигом
- •Сегментный адрес
- •Смещение
- •Смещение
- •Физический адрес
- •Задания для выполнения:
- •Контрольные вопросы.
AСегментный адрес
Смещение
S
: AO
– offset
(смещение)
Пример: дан логический адрес 4F00h : 0010h, найдем соответствующий ему физический адрес: PA = 4F00h * 10 + 0010h = 4F000h + 0010h = 4F010h
Смещение
Физический адрес
И
Сегментный адрес
Физический адрес никогда не перейдет границу в 1 Мб. Если к последнему физическому адресу FFFFFh добавить 1, произойдет полное обнуление 20-ти разрядов и адресное пространство как бы свернется в кольцо, отсчет адресов начнется сначала:
-
+
FFFFFh
1
1|00000h
Исполнительный адрес, в свою очередь, никогда не перейдет границу 64-х Кб сегмента, на начало которого указывает содержимое сегментного регистра. Сегмент также получается свернутым в кольцо – по мере увеличения исполнительный адрес достигает значения FFFFh (64Кбайт – 1), снова обнуляется и начинает расти сначала. (Сворачивание сегментов и всего адресного пространства в кольцо в МП 80086/88 никак не контролируется.)
С одной стороны, это свойство обеспечивает некоторую защиту сегментов друг от друга, но с другой стороны, сегментация памяти является неудобством при написании больших программных модулей. Достоинство сегментной организации памяти: модульность программ – четко выражены области данных, стека и инструкций, а в защищенном режиме – возможность организации многозадачности.
Сегментация адреса обеспечивается при любом режиме работы CPU. Она реализуется путем разбиения адресного пространства на блоки (сегменты), доступ к которым производится в соответствии с определенными правилами. Сегменты хранятся с определенными атрибутами: расположение, размер, тип (стек, команда, данные).
Итак, для обращения к ячейке сегментированной памяти используется составной (ЛОГИЧЕСКИЙ) адрес AS:AO.
Преобразование логических адресов в физические всегда однозначно, т. е. паре АSeg и ЕА отвечает единственный физический адрес. Обратное преобразование не является однозначным: физический адрес можно представить с помощью 64 Кб/16=4096 пар логических адресов.
ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ
________________________________________________________________
Единицей памяти является байт. Два смежных байта образуют слово.
Сердцем компьютера является микропроцессор, который имеет доступ к байтам или словам в памяти.
Сокращенная запись групп из четырех битов представляет собой шестнадцатиричный формат. Шест. цифры 0-9 и A-F представляют двоичные числа от 0000 до 1111.
Программы состоят из сегментов: сегмент стека для хранения адресов возврата, сегмент данных для определения данных и рабочих областей и сегмент кода для выполняемых команд. Все адреса в программе представлены как относительные смещения от начала сегмента.
ROM (ПЗУ) и RAM (ОЗУ) представляют собой два типа внутренней памяти.
Минимальный размер сегмента 16 байт (параграф). Максимальный размер – 64 Кбайта.
Сегмент в памяти всегда размещается на границе параграфа! Следовательно его 20-битный физический адрес имеет вид ХХХХ ХХХХ ХХХХ ХХХХ 0000.
16 старших разрядов физического адреса начала сегмента хранятся в соответствующем сегментном регистре.
Для обращения к ячейке памяти программист использует ЛОГИЧЕСКИЙ адрес AS:AO.