Архитектура микропроцессоров и их программирование. Карягин А.П. - 13 стр.

UptoLike

Составители: 

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