Assembler для начинающих


Команды управления



Команды управления


      Команды управления микросхемы 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 команды тоже входит в рабочую
    среду.
 
                                      ВОЗРАСТАНИ АДРЕСОВ
                              ДДДДДДДДДДДДДДДДДДДДДї
                15                           0       і
                ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї          і
                і   УПРАВЛЯЮЩЕЕ СЛОВО         і+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
                                      ВОЗРАСТАНИЕ АДРЕСОВ
                              ДДДДДДДДДДДДДДДДДДДДДї
                15                           0       і
                ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї          і
                і   УПРАВЛЯЮЩЕЕ СЛОВО         і+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




Содержание раздела