Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка1.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

7.2.3. Некоторые команды сопроцессора

Далее будут рассмотрены наиболее часто используемые команды сопроцессора 8087.

7.2.3.1. Команды пересылки данных и загрузки констант сопроцессора

Эти команды позволяют загружать операнды из памяти в стек сопроцессора или извлекать из стека значения и записывать их в память. Некоторые команды загружают в стек сопроцессора константы, такие как 1 или число .

В таблице 7.1 приведены команды пересылки данных и загрузки констант сопроцессора, их операнды и назначение.

Таблица 7.1 - команды передачи данных и загрузки констант сопроцессора.

Команда

Операнд

Назначение

FLD

память

Загрузка вещественного числа в ST(0)

FILD

память

Загрузка целого числа в ST(0)

FLDZ

Загрузка нуля в ST(0)

FLD1

Загрузка единицы в ST(0)

FLDPI

Загрузка числа Пи в ST(0)

FLDL2T

Загрузка двоичного логарифма числа 10 в ST(0)

FLDL2E

Загрузка двоичного логарифма числа e в ST(0)

FLDLG2

Загрузка десятичного логарифма числа 2 в ST(0)

FLDLN2

Загрузка натурального логарифма числа 2 в ST(0)

FST

память

Запись вещественного числа в память из ST(0) без выталкивания из стека

FSTP

память

Запись вещественного числа в память из ST(0) с выталкиванием из стека

FIST

память

Запись целого числа в память из ST(0) без выталкивания из стека

FISTP

память

Запись целого числа в память из ST(0) с выталкиванием из стека

При использовании команд с выталкиванием из стека (FSTP, FISTP) число записывается в память и при этом выталкивается из стека сопроцессора.

При использовании в качестве операнда ячейки памяти и косвенной формы адресации необходимо указывать тип операнда – конструкция WORD PTR для 16-битного целого числа, DWORD PTR для одинарной точности или для 32-битного целого числа, QWORD PTR для двойной точности или 64-битного целого числа, а также TBYTE PTR для формата с расширенной точностью.

Команда FLD может иметь в качестве операнда регистры ST(0) – ST(7), при этом значение соответствующего регистра заносится в вершину стека.

Команда fxch

Команда FXCH используется для обмена значениями регистра ST(0) и другого числового регистра сопроцессора. Если команда используется без операндов, меняются значениями регистры ST(0) и ST(1). Если в качестве операнда указан числовой регистр сопроцессора, то меняются значениями регистр ST(0) и указанный регистр.

Примеры использования команд:

A DW 1.0

B DD 2.0

C DQ 3.0

D DT 4.0

. . .

FLD B

MOV BX, OFFSET C

FLD QWORD PTR [BX]

MOV DI, OFFSET D

FLD TBYTE PTR [DI]

FILD A

MOV SI, OFFSET B

FILD DWORD PTR B

FILD C

. . .

FLDZ

FLD1

FLDPI

. . .

FSTP B

MOV BX, OFFSET C

FST QWORD PTR [BX]

MOV DI, OFFSET D

FSTP TBYTE PTR [DI]

FIST A

MOV SI, OFFSET B

FISTP DWORD PTR B

FISTP C

FXCH

FXCH ST(2)