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


Команды сопроцессора 8087 должны рассматриваться



Набор команд сопроцессора 8087

      Команды сопроцессора 8087 должны рассматриваться как расширение
    набора команд микропроцессора 8088, т.е.  микросхема 8087 добавляет
    команды к общему набору.  Адресация памяти выполняется так же, как
    и в микропроцессоре 8088.  Как мы уже видели ранее, так происходит
    потому, что в действительности микропроцессор 8088 сам порождает
    адреса памяти, а сопроцессор 8087 только выполняет требуемые
    опреции над данными.
 
      Сороцессор 8087 имеет набор регистров для чисел с плавающей
    точкой, организованный в виде стека.  Вершину стека микросхема 8087
    локализует с помощью 3=битового указателя, содержащегося в слове
    состояния.    Прочитав слово состояния, вы сможете узнать, какой из
    восьми регистров является текущей вершиной стека; но, как будет


    видно далее, эта информация в программе требуется редко.
 
      Вся адресация регистрового стека микросхемы 8087 делается
    относительно текущей вершины стека.  Мнемонически на ассемблере
    вершина стека называется ST(0) или просто ST.  Элемент, лежащий
    прямо под вершиной стека, называется ST(1), второй элемент - ST(2),
    и так далее, вплоть до последнего элемента, ST(7).      Для простоты
    использования мы будем опускать скобки в обозначениях элементов
    стека, используя ST0, ST1, ST2 и так далее.
 
      А теперь давайте посмотрим, как программа может добраться к
    элементам стека.  Команда
 
      FADD   ST0, ST3
 
      складывает вершину стека и четвертый его элемент, помещая
    результат в вершину стека.      На Фиг. 7.9а показаны действия этой
    команды.  Ссылка на регистры ST0 и ST3 жестко связана с указателем
    стека.  На рисунке складываются значения A и D, а результат A + D
    замещает значение A, так как оно лежит в вершине стека.  На
    Фиг. 7.9б до выполнения той же самой команды в стек был помещен
    элемент E.    Команда по=прежнему складывает содержимое вершины стека
    с его четвертым элементом; но, как показано на Фиг. 7.9б, она теперь
    складывает значения E и C, замещая результатом E + C зеачение E.  В
    результате помещения элемента E в стек перераспределения операндов
    внутри сопроцессора 8087 не произошло, но произошло их перемещение
    по отношению к вершине стека.  То есть элемент ST3 всегда является
    четвертым элементом стека, независимо от того, где расположен
    указатель стека.
      Мы можем разбить команды сопроцессора 8087 на три широкие
    группы.  В первой группе находятся пересылки данных - загрузки и
    записи данных в сопроцессор 8087 и из него.  Вторая группа -
    управление сопроцессором, команды, которые служат для нужд
    внутреннего сервиса 8087.  В третьей группе команд сосредоточены
    все возможности сопроцессора 8087, это команды числовой обработки.
    Далее мы рассмотрим каждую группу детальнее.  Этот текст не
    содержит исчерпывающего описания команд микросхемы 8087.  Мы будем
    использовать примеры, чтобы с их помощью сообщить достаточное
    количество информации о значении той или иной команды, а
    рассмотрение всех вычислительных возможностей сопроцессора 8087
    выходит за рамки данной книги.
       ЪДДДДДДДДДДДДДДДДДДДДДї                ЪДДДДДДДДДДДДДДДДДДДДДї
       і               і                і               і
       і  ЪДДДДДДДДДДДДї     і                і  ЪДДДДДДДДДДДДї     і
       АДДґ A     ГДДДД +              АДДґ      E     ГДДДД +
        ГДДДДДДДДДДДДґ     і               ГДДДДДДДДДДДДґ     і
        і   B     і     і                 і      A     і     і
        ГДДДДДДДДДДДДґ     і               ГДДДДДДДДДДДДґ     і
        і   C     і     і                 і      B     і     і
        ГДДДДДДДДДДДДґ     і               ГДДДДДДДДДДДДґ     і
        і   D     ГДДДДДЩ                 і      C     ГДДДДДЩ
        ГДДДДДДДДДДДДґ               ГДДДДДДДДДДДДґ
        і          і                 і      D     і
                                     ГДДДДДДДДДДДДґ
                                     і        і
            (a)                          (b)
 
                  Фиг. 7.9 Действие FADD ST0,ST3


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