Команды сопроцессора 8087 должны рассматриваться как расширение набора команд микропроцессора 8088, т.е. микросхема 8087 добавляет команды к общему набору. Адресация памяти выполняется так же, как и в микропроцессоре 8088. Как мы уже видели ранее, так происходит потому, что в действительности микропроцессор 8088 сам порождает адреса памяти, а сопроцессор 8087 только выполняет требуемые операции над данными.
FADDST0, 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