Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Сегментная организация памяти МП. Сегментные регистры и сегменты



Обычно программа состоит из нескольких частей – кодовой, информационной и стековой. Так как заранее неизвестны длины этих составляющих, то удобно, чтобы при программировании каждая из них имела собственную нумерацию слов, отсчитываемых с нуля. Для этого организуют систему сегментированной памяти. Все пространство памяти представляет собой набор сегментов.

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

Микропроцессор позволяет независимо адресовать 4 программных сегмента в памяти:

  1. сегмент команд,
  2. сегмент данных,
  3. сегмент стека,
  4. дополнительный сегмент.

Каждой составляющей программы выделяется сегмент памяти. Сегмент – это независимая и отдельно адресуемая единица памяти. В каждом сегменте устанавливается своя собственная нумерация слов. Физический адрес памяти определяется номером сегмента и адресом внутри сегмента.

Каждому сегменту программой назначается начальный адрес, являющийся адресом первого байта сегмента в пространстве памяти. Начальный адрес сегмента хранится в соответствующем сегментном регистре.

Память логически организована как одномерный массив байтов, каждый из которых имеет физический адрес. Весь обмен информацией между микропроцессором и оперативной памятью осуществляется с использованием физических адресов. Как только устройство шинного интерфейса микропроцессора обращается к памяти, формируется физический адрес требуемой ячейки оперативной памяти. Логический адрес ячейки памяти состоит из двух значений:

1. начального адреса сегмента,

2. внутрисегментного смещения, которое определяет расстояние от начала сегмента до адресуемой ячейки памяти.

Изменяя содержимое сегментных регистров, можно передвигать сегменты в границах всей памяти. Внутри программы все адреса памяти относительны к началу сегмента.

Для хранения относительных адресов ячеек памяти внутри сегментов (смещений относительно начала сегментов) используются регистры смещений IP, SP, BP, SI, DI.

Схема формирования физического адреса ячейки памяти представлена на рисунке.

Выборка команд из памяти осуществляется из текущего сегмента команд по адресу, сформированному путем суммирования содержимого сегментного регистра CS и смещения, в качестве которого используется содержимое регистра указателя команд IP. После выборки из памяти программ очередного байта команды содержимое IP увеличивается на единицу.

Указательные регистры SP и BP предназначены для доступа к данным в текущем сегменте стека. Стековые команды всегда обращаются к текущему сегменту стека по адресу SS: SP. Если при вычислении адреса используется регистр BP, то ячейки стекового сегмента рассматриваются как оперативная память с произвольной выборкой.

Индексные регистры SI и DI содержат смещения, которые относятся к текущему сегменту данных.

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





Дата публикования: 2015-02-03; Прочитано: 488 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...