Assembler - язык неограниченных возможностей

         

Команды пересылки данных FPU


  • Команда:
  • FLD источник
  • Назначение:
  • Загрузить вещественное число в стек
  • Процессор:
  • 8087

    Команда помещает содержимое источника (32-, 64- или 80-битная переменная или ST(n)) и уменьшает ТОР на 1. Команда FLD ST(0) делает копию вершины стека.

  • Команда:
  • FST приемник
  • Назначение:
  • Скопировать вещественное число из стека
  • Команда:
  • FSTP приемник
  • Назначение:
  • Считать вещественное число из стека
  • Процессор:
  • 8087

    Копирует ST(0) в приемник (32- или 64-битную переменную или пустой ST(n) в случае FST; 32-, 64- или 80-битную переменную или пустой ST(n) в случае FSTP). FSTP после этого выталкивает число из стека (помечает ST(0) как пустой и увеличивает ТОР на один).

  • Команда:
  • FILD источник
  • Назначение:
  • Загрузить целое число в стек
  • Процессор:
  • 8087

    Преобразовывает целое число со знаком из источника (16-, 32- или 64-битная переменная) в вещественный формат, помещает в вершину стека и уменьшает ТОР на 1.

  • Команда:
  • FIST приемник
  • Назначение:
  • Скопировать целое число из стека
  • Команда:
  • FISTP приемник
  • Назначение:
  • Считать целое число из стека
  • Процессор:
  • 8087

    Преобразовывает число из вершины стека в целое со знаком и записывает его в приемник (16- или 32-битная переменная для FIST; 16-, 32- или 64-битная переменная для FISTP). FISTP после этого выталкивает число из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Попытка записи слишком большого числа, бесконечности или не-числа приводит к исключению «недопустимая операция» (и записи целой неопределенности, если IM = 1).

  • Команда:
  • FBLD источник
  • Назначение:
  • Загрузить десятичное число в стек
  • Процессор:
  • 8087

    Преобразовывает BCD число из источника (80-битная переменная в памяти), помещает в вершину стека и уменьшает ТОР на 1.

  • Команда:
  • FBSTP приемник
  • Назначение:
  • Считать десятичное число из стека
  • Процессор:
  • 8087

    Преобразовывает число из вершины стека в 80-битное упакованное десятичное, записывает его в приемник (80-битная переменная) и выталкивает это число из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Попытка записи слишком большого числа, бесконечности или не-числа приводит к исключению «недопустимая операция» (и записи десятичной неопределенности, если IM = 1).

  • Команда:
  • FXCH приемник
  • Назначение:
  • Обменять местами два регистра стека
  • Процессор:
  • 8087
    <
    /p> Обмен местами содержимого регистра ST(0) и источника (регистр ST(n)). Если операнд не указан, обменивается содержимое ST(0) и ST(1).

  • Команда:
  • FCMOVcc приемник, источник
  • Назначение:
  • Условная пересылка данных
  • Процессор:
  • P6
    Это набор команд, каждая из которых копирует содержимое источника (регистр ST(n)) в приемник (только ST(0)), если выполняется соответствующее условие. Реально каждое условие соответствует тем или ным значениям флагов регистра FLAGS, но после команд

    fcom (или другие команды сравнения) fstsw ax sahf

    в регистр FLAGS загружаются флаги С0, С1 и С3, и последующая команда из набора FCMOVcc приобретает смысл обработки результата предыдущего сравнения (табл. 13).

    Таблица 13. Команды FCMOVcc

    Команда Значения флагов Действие после FCOM
    FCMOVE ZF = 1 если равно
    FCMOVNE ZF = 0 если не равно
    FCMOVB CF = 1 если меньше
    FCMOVBE CF = 1 и ZF = 1 если меньше или равно
    FCMOVNB CF = 0 если не меньше
    FCMOVNBE CF = 0 и ZF = 0 если не меньше или равно
    FCMOVU PF = 1 если несравнимы
    FCMOVNU PF = 0 если сравнимы

    Содержание раздела