ВУЗ:
Составители:
13
1.2.5 Указатель инструкций
Указатель инструкций (регистр IP) всегда содержит смещение в памя-
ти, по которому хранится следующая выполняемая инструкция. Когда выпол-
няется одна инструкция, указатель инструкций перемещается таким образом,
чтобы указывать на адрес памяти, где хранится следующая инструкция. Обыч-
но следующей выполняемой инструкцией является инструкция, хранимая по
следующему адресу памяти, но некоторые инструкции, такие, как вызовы или
переходы, могут привести к тому, что в указатель инструкций будет загружено
новое значение. Таким образом, будет выполнен переход на другой участок
программы.
Значение счетчика инструкций нельзя прочитать или записать непосред-
ственно. Загрузить в указатель инструкций новое значение может только спе-
циальная инструкция перехода (аналогичная только что описанным).
Указатель инструкций сам по себе не определяет адрес, по которому
находится следующая выполняемая инструкция. Картину здесь опять усложня-
ет сегментная организация памяти процессора 8086. Для извлечения инст-
рукции предусмотрен регистр CS, где хранится базовый адрес, при этом указа-
тель инструкций задает смещение относительно этого базового адреса.
1.2.6 Сегментация памяти процессора 8086 и сегментные регистры
Основной предпосылкой сегментации является следующее: процессор
8086 может адресоваться к 1 мегабайту памяти. Для адресации ко всем ячейкам
адресного пространства в 1 мегабайт необходимы 20-разрядные сегментные ре-
гистры. Однако процессор 8086 использует только 16-разрядные указатели на
ячейки памяти. Вспомним, например, что для ссылки на память используется
16-разрядный регистр BX. Как же тогда согласовать 16-разрядные указатели
процессора 8086 и 20-разрядные адреса?
Ответ состоит в том, что процессор 8086 использует двухступенчатую
схему адресации. Да, используются 16-разрядные указатели, но эта форма
представляет собой только часть полной схемы адресации. Каждый 16-
разрядный указатель памяти или смещение комбинируется с содержимым 16-
разрядного сегментного регистра для формирования 20-разрядного адреса па-
мяти.
Рисунок 1.5 - 20-разрядные адреса памяти.
+
1 F D 5 - 16-разрядный сегментный регистр
1 2 3 C
2 0 F 8 C
- 16-разрядное смещение
- 20-разрядный адрес памяти
1.2.5 Указатель инструкций Указатель инструкций (регистр IP) всегда содержит смещение в памя- ти, по которому хранится следующая выполняемая инструкция. Когда выпол- няется одна инструкция, указатель инструкций перемещается таким образом, чтобы указывать на адрес памяти, где хранится следующая инструкция. Обыч- но следующей выполняемой инструкцией является инструкция, хранимая по следующему адресу памяти, но некоторые инструкции, такие, как вызовы или переходы, могут привести к тому, что в указатель инструкций будет загружено новое значение. Таким образом, будет выполнен переход на другой участок программы. Значение счетчика инструкций нельзя прочитать или записать непосред- ственно. Загрузить в указатель инструкций новое значение может только спе- циальная инструкция перехода (аналогичная только что описанным). Указатель инструкций сам по себе не определяет адрес, по которому находится следующая выполняемая инструкция. Картину здесь опять усложня- ет сегментная организация памяти процессора 8086. Для извлечения инст- рукции предусмотрен регистр CS, где хранится базовый адрес, при этом указа- тель инструкций задает смещение относительно этого базового адреса. 1.2.6 Сегментация памяти процессора 8086 и сегментные регистры Основной предпосылкой сегментации является следующее: процессор 8086 может адресоваться к 1 мегабайту памяти. Для адресации ко всем ячейкам адресного пространства в 1 мегабайт необходимы 20-разрядные сегментные ре- гистры. Однако процессор 8086 использует только 16-разрядные указатели на ячейки памяти. Вспомним, например, что для ссылки на память используется 16-разрядный регистр BX. Как же тогда согласовать 16-разрядные указатели процессора 8086 и 20-разрядные адреса? Ответ состоит в том, что процессор 8086 использует двухступенчатую схему адресации. Да, используются 16-разрядные указатели, но эта форма представляет собой только часть полной схемы адресации. Каждый 16- разрядный указатель памяти или смещение комбинируется с содержимым 16- разрядного сегментного регистра для формирования 20-разрядного адреса па- мяти. 1 F D 5 - 16-разрядный сегментный регистр + 1 2 3 C - 16-разрядное смещение 2 0 F 8 C - 20-разрядный адрес памяти Рисунок 1.5 - 20-разрядные адреса памяти. 13
Страницы
- « первая
- ‹ предыдущая
- …
- 11
- 12
- 13
- 14
- 15
- …
- следующая ›
- последняя »