logo search
несколько программ / bsp33

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

Поля регистра состояния сопроцессора 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.