Сегментные регистры

Сегментные регистры используются для хранения начальных адресов полей памяти (сегментов), отведенных в программах для хранения:

- команд программы (сегмент кода – CS);

- данных (сегмент данных – DS);

- стековой области памяти (сегмент стека – SS);

- дополнительной области памяти данных при межсегментных пересылках (расширенный сегмент – ES), поскольку размер сегмента в реальном режиме работы микропроцессора ограничен величиной 64 Кбайт.

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

Рис.21 Сегментные регистры

1. Сегмент кода. Содержит команды программы.

Для доступа к этому сегменту служит регистр CS (code segment register) — сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть эти команды загружаются в конвейер микропроцессора).

2. Сегмент данных. Содержит обрабатываемые программой данные.

Для доступа к этому сегменту служит регистр DS (data segment register) — сегментный регистр данных, который хранит адрес сегмента данных текущей программы.

3. Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком.

Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр SS (stack segment register) — сегментный регистр стека, содержащий адрес сегмента стека.

4. Дополнительные сегменты данных.

Регистр ES используется в программах, обрабатывающих строковые последовательности. Если Ваша программа предполагает такую обработку, Вы должны проинициализировать этот регистр соответствующим значением (аналогично принудительной инициализации основного сегмента данных DS).

Регистр указателя команд IP «следит» за ходом выполнения программы, указывая в каждый момент относительный адрес команды, следующей за исполняемой. Регистр IP программно недоступен (IP - это просто его сокращенное название, а не мнемоническое обозначение, используемое в языке программирования); наращивание адреса в нем выполняет микропроцессор, учитывая при этом длину текущей команды. Команды переходов, прерываний, вызова подпрограмм и возврата из них изменяют содержимое IP, осуществляя тем самым переходы в требуемые точки программы.

Рис.22Регистр указателя команд IP


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: