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

Регистр признаков. Указатель команды. Указатель операнда. 10.3 Форматы вещественных чисел, используемые сопроцессором. Мантисса




Регистр признаков

Регистр признаков содержит восемь 2-х битовых полей TAG0 – TAG7. Содержимое каждого поля характеризует значение соответствующего числового регистра ST(0) – ST(7). По содержимому полей TAG0 – TAG7 можно судить о том, какое число хранится в регистрах ST(0) – ST(7). Возможны следующие значения каждого поля TAG0 – TAG7:

00B – в числовом регистре находится действительное ненулевое число;

01B – в числовом регистре находится нуль;

10B – числовой регистр содержит недействительное число – бесконечность, специальное нечисловое значение NaN (Not a Number) или денормализованное число.

11B – числовой регистр пуст.

Если регистр не отмечен как пустой, то при попытке записи в него вырабатывается код недействительной операции (устанавливается бит 0 регистра состояния) и запись в стек не производится. Этот особый случай может быть замаскирован, и тогда запись будет произведена. Для этого нужно установить бит 0 регистра управления, иначе возникновение особого случая вызовет прерывание центрального процессора.

 

Указатель команды

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

 

Указатель операнда

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

 

10. 3 Форматы вещественных чисел, используемые сопроцессором

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

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

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

Знак

Порядок

Мантисса

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

 

Знак

Порядок

Мантисса

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

 

Знак

Порядок

Мантисса

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

 

Рис. 7. Форматы действительных чисел

 

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

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

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

 

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

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

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

 

Таблица 14

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

Команда Операнд Назначение
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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...