Аппаратное обеспечение IBM PC

Регистры указателя команды и указателя операнда


Регистры указателя команды и указателя операнда предназначены для обработки особых случаев, возникающих при выполнении команд в сопроцессоре.

В сопроцессоре 8087 указатель команды содержит 20-разрядный адрес команды, вызвавшей особый случай и код выполняемой в этот момент операции. Адрес команды здесь указывается без учета предшествующих команде префиксов:

---------------------------------------------------¬ ¦Адрес команды (0...15) ¦ +------------------------T-T-----------------------+ ¦Адрес команды (16...19) ¦X¦ Код операции (0...10) ¦ L------------------------+-+------------------------

Сопроцессоры 80287/80387 в реальном режиме работы имеют такой же формат регистра указателя команд, однако этот указатель показывает на первый префикс команды, вызвавшей особый случай.

Защищенный режим работы центрального процессора и сопроцессора выходит за рамки данной книги, однако для полноты изложения приведем формат указателей и для этого режима. В защищенном режиме адрес состоит из селектора (в какой-то степени соответствует сегментной компоненте адреса реального режима) и смещения. Формат указателя команды для защищенного режима представлен на следующем рисунке:

---------------------------------------------------¬ ¦ Смещение команды ¦ +--------------------------------------------------+ ¦ Селектор команды ¦ L---------------------------------------------------

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

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

Формат указателя операнда для реального режима:

---------------------------------------------------¬ ¦ Адрес операнда (0...15) ¦ +-------------------------------T------------------+ ¦ Адрес операнда (16...19) ¦XXXXXXXXXXXXXXXXXX¦ L-------------------------------+-------------------

Формат указателя операнда для защищенного режима:

---------------------------------------------------¬ ¦ Смещение операнда ¦ +--------------------------------------------------+ ¦ Селектор операнда ¦ L---------------------------------------------------



Содержание раздела