|
Команды управления микросхемы 8087 ничего
не вычисляют, однако
они необходимы для управления ее
работой.На Фиг. 7.12 показан
литсинг ассемблера команд управления
сопроцессора 8087.
Многие из команд управления могут
выполняться без синхронизации
с микропроцессором 8088.На Фиг. 7.12 показаны эти команды в
форме, ассемблированной с использованием
команды WAIT, а код
операции в поле комментариев изображает
команды без команды WAIT.
Ассемблеру сообщается о том, что операция
выполняется без ожидания,
с помощью символов FN в качестве первых
двух символов мнемоники
команды.
На Фиг. 7.13 перечислены действия всех
команд управления
сопроцессором 8087.Команды FENI, FDISI, FCLEX обслуживают
особые
ситуации в сопроцессоре 8087.В управляющем регистре содержится
маска прерываний, которая выделяет те
ситуации, которые могут
вызвать прерывание.Маской прерываний сопроцессора 8087 в целом
управляют команды FENI и FDISI; эти
команды аналогичны
соответственно командам STI и CLI микропроцессора
8088, за
исключением того, что они управляют
прерываниями только от
сопроцессора 8087.Команда FCLEX сбрасывает биты особых ситуаций
регистра состояния.Микросхема 8087 помнит все особые ситуации,
так что если последовательность команд
возбудила более одного типа
ошибки, все эти ошибки будут отмечены в
регистре состояния.И
команда FCLEX - единственный способ сброса
этих флагов.
Команда Действие
--------------------------------------------------------
FINITИнициализация
8087. Переустановка программ
FENIОсвобождение
прерываний по исключительным состояниям
FDISIБлокирование
прерываний по исключительным состояниям
FLDCWЗагрузка
управляющего регистра 8087 из памяти
FSTCWСохранение
управляющего регистра 8087 в память
FSTSWСохранение
регистра состояния 8087 в память
FCLEXОчистка
индикаторов исключительных состояний
FSTENVСохранить
оборудование 8087 в память
FLDENVЗагрузить
оборудование 8087 из памяти
FSAVEСохранить
состояние 8087 в память
FRSTORЗагрузить
состояние 8087 из памяти
FINCSTP Увеличеть указатель вершины стека
FDECSTP Уменьшить указатель вершины стека
FFREEОсвободить
регистр стека
FNOPНичего
не делать
FWAITИдентично
WAIT
--------------------------------------------------------
Фиг. 7.13 Управляющие действия
Мы уже рассмотрели управляющее слово и
слово состояния в
составе программной модели сопроцессора
8087.Команды управления
FLDCW, FSTCW и FSTSW загружают и сохраняют
эти регистры.
Рабочая среда сопроцессора 8087 содержит
все регистры
микросхемы, за исключением стека данных;
рабочая среда состоит из
14 байт.Рисунок 7.14 показывает структуру рабочей среды после
того, как сопроцессор 8087 записал ее в
память.Запись рабочей
среды - это обычное действие при обработке
особой ситуации в
сопроцессоре 8087, так как рабочая среда
содержит все данные об
особых ситуациях.Один 20=битовый адрес указывает на последнюю
команду, которую выполнил сопроцессор
8087.Другой адрес указывает
последнюю из вызывавшихся ячеек
данных.Код последней
выполнявшейся сопроцессором 8087 команды
тоже входит в рабочую
среду.
ВОЗРАСТАНИ АДРЕСОВ
ДДДДДДДДДДДДДДДДДДДДДї
150і
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іУПРАВЛЯЮЩЕЕ СЛОВОі+0і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґі
іСЛОВО СОСТОЯНИЯі+2і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґі
іСЛОВО ПРИЗНАКАі+4і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґі
іIP15-0і+6
УКАЗАТЕЛЬГДДДДДДДДДДДВДВДДДДДДДДДДДДДДДДДґ
КОМАНДЫі IP19-16і0і КОД ОПЕРАЦИИі+8
ГДДДДДДДДДДДБДБДДДДДДДДДДДДДДДДДґ
іOP15-0і+10
УКАЗАТЕЛЬГДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДґ
ОПЕРАНДАі OP19-16і0і+12
АДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДЩ
Фиг. 7.14 Рабочая среда 8087
Состояние микросхемы 8087 - это рабочая
среда вместе с
регистрами данных.Так как в сопроцессоре 8087 имеется восемь
10=байтовых регистров, состояние содержит
94 байта.Рисунок 7.15
иллюстрирует структуру состояния
сопроцессора 8087, записанного в
память.Структура состояния идентична рабочей среде с добавленным
в конце регистровым стеком.Программа может записать состояние
сопроцессора 8087, когда происходит
переключение задач, или если в
обработчике прерываний потребуется
использование сопроцессора 8087.
Когда ранее выполнявшаяся задача снова
получает управление,
состояние может быть программно
восстановлено.
Две команды - FINCSTP и FDECSTP -
взаимодействуют с указателем
стека; они перемещают его.Все данные в регистрах остаются на
местах, т.е.слово "этикеток" не изменяется.Увеличение указателя
стека не эквивалентно извлечению данных из
стека, так как
"этикетка" для этих данных все
же показывает, что в регистре есть
данные.Попытка загрузить какое=либо число в такой стек приведет к
появлению особой ситуации - переполнению
стека.Команда FFREE
освобождает ячейку стека, устанавливая
"этикетку" для этой ячейки
так, что она показывает отсутствие данных
в ячейке.Но команда
FFREE не меняет указатель стека, и если
вам просто нужно выбросить
верхний элемент из стека, то в большинстве
случаев это легче
сделать с помощью арифметической команды.
A
ВОЗРАСТАНИЕ АДРЕСОВ
ДДДДДДДДДДДДДДДДДДДДДї
150і
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
іУПРАВЛЯЮЩЕЕ СЛОВОі+0і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґі
іСЛОВО СОСТОЯНИЯі+2і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґі
іСЛОВО ПРИЗНАКАі+4і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґі
іIP15-0і+6
УКАЗАТЕЛЬГДДДДДДДДДДДВДВДДДДДДДДДДДДДДДДДґ
КОМАНДЫі IP19-16і0і КОД ОПЕРАЦИИі+8
ГДДДДДДДДДДДБДБДДДДДДДДДДДДДДДДДґ
іOP15-0і+10
УКАЗАТЕЛЬГДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДґ
ОПЕРАНДАі OP19-16і0і+12
ГДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДґ
іМАНТИССА 15-0 і+14
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іМАНТИССА 31-16і+16
ЭЛЕМЕНТ
ВЕРШИ-ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
НЫ СТЕКА:STіМАНТИССА 47-32і+18
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іМАНТИССА 63-48і+20
ГДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іsіПОРЯДОК 14-0 і+22
ГДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іМАНТИССА 15-0 і+24
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іМАНТИССА 31-16і+26
СЛЕДУЮЩИЙГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
ЭЛЕМЕНТ СТЕКА іМАНТИССА 47-32і+28
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іМАНТИССА 63-48і+30
ГДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іsіПОРЯДОК 14-0 і+32
ГДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
... . . . . . . ....
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іМАНТИССА 15-0 і+84
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іМАНТИССА 31-16і+86
ПОСЛЕДНИЙГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
ЭЛЕМЕНТ СТЕКАіМАНТИССА 47-32і+88
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іМАНТИССА 63-48і+90
ГДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іsіПОРЯДОК 14-0 і+92
АДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
ПРИМЕЧАНИЯ:
S = Знак
Бит 0 каждого поля - самый правый младший бит соответствующего
поля регистра
бит 63 мантиссы - целый бит (подразумевая двоичная точка
находится рядом с ним, справа)
Фиг. 7.15 Состояние 8087
|