Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A_K_2-2.doc
Скачиваний:
7
Добавлен:
18.11.2019
Размер:
477.7 Кб
Скачать

Команды управления сопроцессором х87

Команды управления сопроцессором х87 обеспечивают доступ к нечисловым регистрам. Мнемоники, которые начинаются с FN, соответствуют командам «БЕЗ ОЖИДАНИЯ», т.е. процессор х86 передает их для выполнения в сопроцессор х87, не проверяя занятость сопроцессора и игнорируя численные особые случаи.

Мнемоники без буквы «N» соответствуют командам «С ОЖИДАНИЕМ», т.е. заставляют процессор х86 реагировать на незамаскированные особые случаи и ожидать завершения выполнения команд в сопроцессоре х87. В общем случае, программистам рекомендуется избегать форм команд «без ожидания».

  • Команда – FNSTCW mem (FSTCW mem) – передает содержимое регистра управления (CW) в ячейку памяти.

  • Команда – FLDCW mem – загружает регистр управления (CW) из ячейки памяти. Эти две команды применяются для изменения режима работы сопроцессора х87.

  • Команда – FNSTSW mem (FSTSW mem) – передает содержимое регистра состояния (SW) сопроцессора х87 в ячейку памяти.

  • Команда – FNSTSW AX (FSTSW AX) – передает содержимое регистра состояния (SW) сопроцессора в регистр AX микропроцессора х86.

  • Команда – FNCLEX (FCLEX) – сбрасывает в регистре состояния сопроцессора флаги особых случаев, а также биты ES и BUSY. Эти флаги не сбрасываются аппаратно и должны явно сбрасываться программистом.

  • Команда – FNINIT (FINIT) – инициализирует регистры управления, состояния и тэгов на значения, приведенные в табл. 2.34. Такое же действие производит аппаратный сигнал сброса – RESET.

Таблица 2.34 – Инициализация сопроцессора х87

Регистр

Выбор

Режим работы

Регистр

управления

(Режим бесконечности)

Проективный – (287)

Афинный – (387+)

Режим округления

Округление к ближайшему

Точность

Расширенная

Все особые случаи

Замаскированы

Регистр

Состояния

Бит занятости

В = 0: Не занят

Код условия

Не определен

Указатель стека

TOP = 000

Бит суммарной ошибки

ES = 0

Регистр тэгов

Все тэги показывают – "пустой"

  • Команда запоминания среды – FNSTENV mem (FSTENV mem) – записывает в память содержимое регистров: управления, состояния, тэгов и указателей особого случая. Формат этой информации в памяти для сопроцессоров 87/287 (и реального режима остальных процессоров) показан на рис. 2.18. (Для сопроцессоров 387+ в защищенном режиме виртуальной адресации при размере операндов 32 бита – все регистры занимают в памяти по 4 байта – старшие 2 байта могут быть нулевыми). Затем инициализируются все регистры так же, как и команда FNINIT.

  • Команда – FLDENV – загружает среду, ранее запомненную командой FNSTENV. Эти команды применяются в процедурах обработки особых случаев, чтобы получить доступ к указателям особого случая.

Нач. адрес

Регистр управления

0

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

2 (4)

Регистр тегов

4 (8)

Указатель команды

6 (12)

Указатель операнда

10 (20)

Рис. 2.18 – Формат памяти

в командах FSTENV, FLDENV

Нач. адрес

Регистр управления

0

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

2 (4)

Регистр тегов

4 (8)

Указатель команды

6 (12)

Указатель операнда

10 (20)

ST(0)

14 (28)

ST(1)

24 (38)

ST(2)

34 (48)

ST(3)

44 (58)

ST(4)

54 (68)

ST(5)

64 (78)

ST(6)

74 (88)

ST(7)

84 (98)

Рис. 2.19 – Формат памяти

в командах FSAVE, FRSTOR

  • Команда – FNSAVE mem (FSAVE mem) – записывает в память содержимое всех регистров сопроцессора. Всего в память передается 94 байта для сопроцессоров 87/287 и реального режима остальных процессоров (см. формат на рис. 2.19) и 108 байтов при 32-х битовых операндах в режиме виртуальной адресации.

  • Команда – FRSTOR mem – восстанавливает все регистры сопроцессора из памяти. Эти команды в основном применяются для переключения задач.

  • Команды FINCSTP и FDECSTP осуществляют соответственно инкремент и декремент указателя стека ST. Они не влияют на регистр тэгов и численные регистры.

  • Команда FFREE ST(i) устанавливает тэг регистра ST(i) на указатель "пустой".

  • Команда FNOP действует так же, как команда FST ST,ST(0), т.е. не производит никакой операции.

  • Команда FSETPM переводит сопроцессор х87 в виртуальный режим.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]