Регистры указателя команды и указателя операнда
Регистры указателя команды и указателя операнда предназначены для обработки особых случаев, возникающих при выполнении команд в сопроцессоре.
В сопроцессоре 8087 указатель команды содержит 20-разрядный адрес команды, вызвавшей особый случай и код выполняемой в этот момент операции. Адрес команды здесь указывается без учета предшествующих команде префиксов:
---------------------------------------------------¬ ¦Адрес команды (0...15) ¦ +------------------------T-T-----------------------+ ¦Адрес команды (16...19) ¦X¦ Код операции (0...10) ¦ L------------------------+-+------------------------
Сопроцессоры 80287/80387 в реальном режиме работы имеют такой же формат регистра указателя команд, однако этот указатель показывает на первый префикс команды, вызвавшей особый случай.
Защищенный режим работы центрального процессора и сопроцессора выходит за рамки данной книги, однако для полноты изложения приведем формат указателей и для этого режима. В защищенном режиме адрес состоит из селектора (в какой-то степени соответствует сегментной компоненте адреса реального режима) и смещения. Формат указателя команды для защищенного режима представлен на следующем рисунке:
---------------------------------------------------¬ ¦ Смещение команды ¦ +--------------------------------------------------+ ¦ Селектор команды ¦ L---------------------------------------------------
Код операции здесь отсутствует, но его легко получить, пользуясь адресом команды.
Если при возникновении особого случая использовался операнд, находящийся в оперативной памяти, его адрес записывается в регистр указателя операнда. Приведем форматы этого регистра для реального и защищенного режимов работы.
Формат указателя операнда для реального режима:
---------------------------------------------------¬ ¦ Адрес операнда (0...15) ¦ +-------------------------------T------------------+ ¦ Адрес операнда (16...19) ¦XXXXXXXXXXXXXXXXXX¦ L-------------------------------+-------------------
Формат указателя операнда для защищенного режима:
---------------------------------------------------¬ ¦ Смещение операнда ¦ +--------------------------------------------------+ ¦ Селектор операнда ¦ L---------------------------------------------------