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

Команда finit. Команда fstsw. Команда fldcw. Команда fstcw. Fldcw cw  ; загрузка регистра управления. Команда fclex. Команда fsave




Команда FINIT

Команда FINIT выполняет инициализацию сопроцессора. Инициализация включает в себя установку в начальное состояние всех нечисловых регистров сопроцессора. Команда FINIT выполняет следующие действия:

1. В регистр управления сопроцессора заносится значение 037FH (округление до ближайшего представимого числа, расширенная точность, все особые случаи замаскированы).

2. В регистр состояния заносится значение 0000H (флаги особых случаев сброшены, вершина стека установлена в 0).

3. Все регистры стека сопроцессора помечаются в регистре признаков как пустые. Сами значения регистров стека не изменяются.

4. В регистр указателя команды заносится значение 0000H.

5. В регистр указателя операнда заносится значение 0000H.

Команду FINIT рекомендуется выполнить перед началом работы программы с сопроцессором для установки его в исходное состояние после возможного использования другими программами.

 

Команда FSTSW

Команда FSTSW сохраняет значение регистра состояния сопроцессора в 2-х байтовой ячейке памяти. Синтаксис команды:

FSTSW < адресное_выражение>

 

В качестве адресного выражения может использоваться прямая или косвенная адресация памяти. Тип операнда можно не указывать, так как он известен заранее.

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

SW DW?          ; переменная для сохранения значения

. . .

MOV BX, OFFSET SW   ; настройка BX на SW

FSTSW [BX]   ; сохранение значения регистра состояния

 

Команда FLDCW

Команда FLDCW загружает в регистр управления сопроцессора слово из памяти. Синтаксис команды:

FLDCW < адресное_выражение>

 

В качестве адресного выражения может использоваться прямая или косвенная адресация памяти. Тип операнда можно не указывать, так как он известен заранее. Команда FLDCW вместе с командой FSTCW может использоваться для установки необходимых режимов работы сопроцессора (точность, управление округлением, маски особых случаев).

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

CW DW?                            ; переменная для загрузки

                                   ; регистра управления

. . .

FLDCW CW                                ; загрузка регистра управления сопроцессора

Команда FSTCW

Команда FSTCW сохраняет значение регистра управления сопроцессора в ячейке памяти. Синтаксис команды:

FSTCW < адресное_выражение>

 

В качестве адресного выражения может использоваться прямая или косвенная адресация памяти. Тип операнда можно не указывать, так как он известен заранее. Команда FSTCW может использоваться для последующей установки необходимых режимов работы сопроцессора совместно с командой FLDCW.

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

CW DW?                            ; переменная для сохранения

                                   ; регистра управления

. . .

FSTCW CW                       ; сохранение регистра управления сопроцессора

 

Пример использования команд FLDCW и FSTCW для установки двойной точности и округления в сторону нуля:

CW DW?        ; переменная для сохранения регистра управления

. . .

FSTCW CW    ; сохранение регистра управления

OR CW, 0000111000000000B ; установка нужного режима работы

FLDCW CW             ; загрузка регистра управления

 

Команда FCLEX

Команда FCLEX сбрасывает в регистре состояния сопроцессора флаги особых случаев (PE, OE, UE, ZE, DE и IE), флаг суммарной ошибки ES, флаг ошибки стека SF и флаг занятости B.

Команда FSAVE

Команда FSAVE сохраняет в памяти значения всех числовых и нечисловых регистров сопроцессора и затем повторно инициализирует сопроцессор. Формат, в котором команда FSAVE записывает значения нечисловых регистров в память, представлен на рис. 8.

Сразу за значениями указанных регистров в памяти записываются восемь 10-байтовых значений, определяющих содержимое восьми регистров стека сопроцессора. Синтаксис команды FSAVE:

FSAVE < адресное_выражение>

 

В качестве адресного выражения может использоваться прямая или косвенная адресация памяти. При использовании косвенной формы адресации тип операнда не указывается. Начиная со смещения, определяемого адресным выражением, в память будут записаны значения всех регистров сопроцессора.

 

 

Регистр управления

Регистр состояния

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

Указатель команды (биты 0 – 15)

Указатель команды (биты 16 – 31)

Указатель операнда (биты 0 – 15)

Указатель операнда (биты 16 – 31)

   

Рис. 8. Формат записи нечисловых регистров в памяти командой FSAVE

 

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

; область памяти для сохранения регистров

S DB (14 + 10 * 8) DUP (? )

. . .

; сохранение значений регистров сопроцессора

FSAVE S     

Команда FRSTORE

Команда FRSTORE заносит в регистры сопроцессора значения, ранее сохраненные командой FSAVE. Синтаксис команды FRSTORE – такой же, как у команды FSAVE.

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

; область памяти для сохранения регистров

S DB (14 + 10 * 8) DUP (? )

. . .

; сохранение значений регистров сопроцессора

FSAVE S     

; восстановление значений регистров сопроцессора

FRSTORE S

 

Команда FFREE

Команда FFREE помечает регистр стека сопроцессора как свободный. Эта команда заносит код 11B в регистр признаков сопроцессора для указанного регистра стека. Синтаксис команды:

FFREE ST(i)

 

i – целое число от 0 до 7, определяющее необходимый регистр стека сопроцессора. При выполнении команды FFREE содержимое указанного регистра и значение указателя стека не изменяются.

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

FFREE ST(0)

FFREE ST(1)

FFREE ST(2)

 

Поделиться:





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



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