ВУЗ:
Составители:
Рубрика:
7
Смещение
+
Сегменты
Сегментный *4
Адрес
регистр
…
…
Память
В реальном режиме механизм адресации физической памяти имеет следующие характеристики:
• диапазон изменения физического адреса от 0 до 1Мбайт. Эта величина определяется тем,
что шина адреса i8086 имела 20 линий.
• максимальный размер сегмента 64 Кбайта. Это объясняется 16-разрядной архитектурой
I8086. Нетрудно подсчитать, что максимальное значение, которое могут содержать 16-
разрядные регистры, составляют 2
16
-1, что применительно к памяти и определяет величину
64 Кбайт.
• для обращения к конкретному физическому адресу оперативной памяти необходимо
определить адрес начала сегмента (сегментную составляющую) и смещение внутри
сегмента. В сегментном регистре находятся только старшие 16 бит физического адреса
начала сегмента. недостающие 4 бита 20-битового адреса получаются путем сдвига
значения в сегментном регистре влево на 4 разряда. Получение 20-битового адреса
выполняется аппаратно и для программного обеспечения абсолютно прозрачна.
Полученный адрес соответствует адресу начала сегмента. Вторая составляющая адреса –
смещение, которое представляет собой 16-битовое значение. Это значение может
присутствовать в команде в явном или косвенном виде. В результате получается
следующим образом физический адрес
физический адрес= смещение+2
4
*(регистр сегмента)
таким образом мы получаем доступ к 1Мбайту памяти. Получение адреса путем сложения
происходит на аппаратном уровне и опять же прозрачно для программного обеспечения.
Получение смещения зависит от способа адресации, используемой в команде.
Недостатками такой организации памяти являются:
1. сегменты бесконтрольно размещаются с любого адреса, кратного 16 (т.к.
содержимое сегментного регистра аппаратно смещается на 4 разряда). В результате
чего, программа может обращаться по любым адресам, в том числе и реально не
существующим.
2. сегменты имеют максимальный размер 64 Кбайт
3. сегменты могут перекрываться с другими сегментами.
Для устранения этих недостатков и было введено сегментирование памяти в защищенном
режиме.
Мы рассмотрели понятие сегментация и теперь определим сегментные регистры, которые
используются для доступа к соответствующему сегменту шесть основных сегментных
регистров: cs, ss, ds, es, gs, fs.
1. Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит
регистр cs (code segment register) – сегментный регистр кода. Он содержит адрес
сегмента с машинными командами, к которому имеет доступ МП.
2. Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к
этому сегменту служит регистр ds (date segment register
). – сегментный регистр
данных, который хранит адрес сегмента данных текущей программы.
3. Сегмент стека. Этот сегмент представляет собой область памяти, называемую
стеком. Для доступа к этому сегменту служит регистр ss (stack segment register).
Смещение + Сегменты Сегментный *4 Адрес регистр … … Память В реальном режиме механизм адресации физической памяти имеет следующие характеристики: • диапазон изменения физического адреса от 0 до 1Мбайт. Эта величина определяется тем, что шина адреса i8086 имела 20 линий. • максимальный размер сегмента 64 Кбайта. Это объясняется 16-разрядной архитектурой I8086. Нетрудно подсчитать, что максимальное значение, которое могут содержать 16- разрядные регистры, составляют 216-1, что применительно к памяти и определяет величину 64 Кбайт. • для обращения к конкретному физическому адресу оперативной памяти необходимо определить адрес начала сегмента (сегментную составляющую) и смещение внутри сегмента. В сегментном регистре находятся только старшие 16 бит физического адреса начала сегмента. недостающие 4 бита 20-битового адреса получаются путем сдвига значения в сегментном регистре влево на 4 разряда. Получение 20-битового адреса выполняется аппаратно и для программного обеспечения абсолютно прозрачна. Полученный адрес соответствует адресу начала сегмента. Вторая составляющая адреса – смещение, которое представляет собой 16-битовое значение. Это значение может присутствовать в команде в явном или косвенном виде. В результате получается следующим образом физический адрес физический адрес= смещение+24*(регистр сегмента) таким образом мы получаем доступ к 1Мбайту памяти. Получение адреса путем сложения происходит на аппаратном уровне и опять же прозрачно для программного обеспечения. Получение смещения зависит от способа адресации, используемой в команде. Недостатками такой организации памяти являются: 1. сегменты бесконтрольно размещаются с любого адреса, кратного 16 (т.к. содержимое сегментного регистра аппаратно смещается на 4 разряда). В результате чего, программа может обращаться по любым адресам, в том числе и реально не существующим. 2. сегменты имеют максимальный размер 64 Кбайт 3. сегменты могут перекрываться с другими сегментами. Для устранения этих недостатков и было введено сегментирование памяти в защищенном режиме. Мы рассмотрели понятие сегментация и теперь определим сегментные регистры, которые используются для доступа к соответствующему сегменту шесть основных сегментных регистров: cs, ss, ds, es, gs, fs. 1. Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр cs (code segment register) – сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ МП. 2. Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр ds (date segment register). – сегментный регистр данных, который хранит адрес сегмента данных текущей программы. 3. Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Для доступа к этому сегменту служит регистр ss (stack segment register). 7
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »