Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
53
Добавлен:
03.06.2014
Размер:
2.63 Mб
Скачать

Регистр состояния

Поля регистра состояния сопроцессора 8087 показаны на рисунке 10.9.

Рис. 10.9. Формат регистра состояния сопроцессора 8087

Регистр состояния сопроцессоров 80287/80387 и сопроцессора, входящего в состав современных процессоров, имеет немного другой формат. Мы показали его на рис. 10.10.

Рис. 10.10. Формат регистра состояния современных сопроцессоров

В обоих форматах биты 0-5 - флажки особых случаев. Они устанавливаются всегда при возникновении особых случаев, даже замаскированных установкой в 1 соответствующих битов регистра управления.

Приведем таблицу флажков особых случаев:

Флажок

Особый случай

IE

Недействительная операция

DE

Денормализованный результат

ZE

Деление на нуль

OE

Переполнение

UE

Антипереполнение

PE

Неточный результат

Для того, чтобы сбросить установившийся флажок, программа должна явным образом установить его в нуль, выполнив команду записи в регистр состояния.

Назначение бита 7 регистра состояния различно для сопроцессора 8087 и сопроцессоров 80287/80387.

Для сопроцессора 8087 этот бит обозначается IR и содержит флаг запроса прерывания при возникновении незамаскированного особого случая. В этом случае флаг устанавливается в 1.

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

Биты C0, C1, C2, C3 - это коды условий. Они определяются по результату выполнения команд сравнения и команды нахождения остатка. Мы расскажем о них при описании соответствующих команд сопроцессора.

Поле ST занимает три бита 11-13 и содержит номер численного регистра, являющегося вершиной стека численных регистров.

Бит B - бит занятости. Он устанавливается в 1, когда процессор выполняет команду или когда происходит прерывание от сопроцессора. Если сопроцессор свободен, бит занятости установлен в 0.

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

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

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

Рис. 10.11. Указание адреса команды в сопроцессоре 8087

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

Защищенный режим работы центрального процессора и сопроцессора описан в 6 томе «Библиотеки системного программиста». Для полноты изложения приведем формат указателей и для этого режима.

В защищенном режиме адрес состоит из селектора и смещения. Формат указателя команды для защищенного режима представлен на рисунке 10.12.

Рис. 10.12. Формат указателя команды для защищенного режима

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

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

Формат указателя операнда для реального режима представлен на рис. 10.13.

Рис. 10.13. Формат указателя операнда для реального режима

Формат указателя операнда для защищенного режима мы показали на рис. 10.14.

Рис. 10.14. Формат указателя операнда для защищенного режима

Соседние файлы в папке несколько программ