44. Команды передачи данных сопроцессора

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

Команды загрузки числа из области памяти на вершину стека сопроцессора:

    FLD источник — для вещественного,
    FILD источник —для целого,
    FBLD источник — для десятичного числа.

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

  • Операнд считывается и преобразуется к расширенному формату
  • Поле top регистра состояния уменьшается на 1
  • Проверяется содержимое соответствующих битов регистра тегов, если оно равно 1:1, то операнд записывается в регистр стека сопроцессора; если регистр стека занят, то в регистре состояния устанавливается флаг ic, если не установлена маска im
  • .

Команды сохранение числа из вершины стека сопроцессора в память:

FST, FSTP  приемник для вещественного, 
FIST, FISTP приемник - для целого,
FBST, FBSTP приемник - для десятичного числа.

Если в конце мнемонического обозначения команды присутствует символ Р, происходит выталкивание вещественного числа из стека после его сохранения в памяти. Команда изменяет поле ТОР, увеличивая его на единицу. Вследствие этого вершиной стека становится следующий больший по своему физическому номеру регистр стека сопроцессора. Если символ Р отсутствует сохранение числа в памяти не сопровождается выталкиванием его из стека, то есть текущая вершина стека сопроцессора не меняется (поле ТОР не меняется).

Команды обмена
FXCH регистр стека – обмен содержимым между верхушкой стека и указанным регистром стека.

Команды загрузки констант на вершину регистрового стека сопроцессора:
FLDZ — загрузка нуля;
FLD1 — загрузка единицы;
FLDPI — загрузка числа пи;
FLDL2T — загрузка двоичного логарифма десяти;
FLDL2E — загрузка двоичного логарифма экспоненты (числа е);
FLDLG2 — загрузка десятичного логарифма двойки;
FLDLN2 — загрузка натурального логарифма двойки.

17.07.2015