Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Указатель операнда. Указатель операнда содержит 20-разрядный физический адрес операнда, использованного командой, вызвавшей возникновение особого случая.




Указатель команды. Указатель команды содержит 20-разрядный физический адрес команды, вызвавшей особый случай, а также 11-разрядный код последней выполненной операции. Если при возникновении особого случая использовался операнд, то его адрес заносится в регистр указателя операнда.

Указатель операнда. Указатель операнда содержит 20-разрядный физический адрес операнда, использованного командой, вызвавшей возникновение особого случая.

    Все числа в стеке сопроцессора представляются в действительном формате. Сопроцессор может использовать три формата вещественных чисел: с одинарной точностью, с двойной точностью и с расширенной точностью. Конкретный формат определяется содержимым поля PC (Precision Control) регистра управления.

    Каждый из форматов действительных чисел, используемых сопроцессором, содержит поле мантиссы, поле порядка и бит знака. Размер мантиссы и порядка определяется типом формата действительного числа и влияет на точность представления чисел. Чем больше разрядов содержит мантисса, тем точнее представляется число. Чем больше разрядов содержит порядок, тем шире диапазон представляемых чисел.

    Форматы действительных чисел представлены ниже:

Знак

Порядок

Мантисса

Формат с одинарной точностью

 

Знак

Порядок

Мантисса

Формат с двойной точностью

Знак

Порядок

Мантисса

Формат с расширенной точностью

 

Следует отметить, что ухудшение точности не приводит к ускорению работы программы. Поэтому различные форматы следует использовать тогда, когда это целесообразно.

    Все действительные числа, в независимости от их формата, хранятся в нормализованном виде. Это означает, что мантисса числа имеет значения от 1 до 2. При этом целая часть числа, равная 1, не хранится, так как она заранее известна. Порядок числа определяет степень числа 2, на которое умножается мантисса. При этом для хранения порядка к нему добавляется число 16383 для расширенной точности, 1023 для двойной точности и 127 для одинарной точности. Добавление константы к порядку нужно для того, чтобы полученное значение всегда было положительным, так как сам по себе порядок может быть и отрицательным.

    При определении в программе вещественных чисел можно использовать директивы определения данных DD и DQ. При инициализации определенных таким образом переменных нужно записывать вещественное число в формате с плавающей точкой в десятичной форме, например 123. 81263. Даже если число не имеет дробной части, его все равно следует записать с десятичной точкой, например 5. 0, иначе число будет интерпретировано транслятором как целое, а не вещественное.

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

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

 

Таблица 12  

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

Команда Операнд Назначение
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 используется для обмена значениями регистра 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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...