Целочисленные арифметические команды
Целочисленные арифметические команды предназначены для работы на тех участках вычислительных алгоритмов, где в качестве исходных данных используются целые числа в памяти в формате слово и короткое слово, имеющие размерность 16 и 32 бита. fiadd источник — команда складывает значения ST(0)и целочисленного источника, в качестве которого выступает 16-или 32-разрядный операнд в памяти. Результат сложения запоминается в регистре стека сопроцессора ST(0). (st(0)=st(0)+И) fisub источник — команда вычитает значение целочисленного источника из ST(0). Результат вычитания запоминается в регистре стека сопроцессора ST(0). В качестве источника выступает 16-или 32-разрядный целочисленный операнд в памяти. fimul источник — команда умножает значение целочисленного источника на содержимое ST(0). Результат умножения запоминается в регистре стека сопроцессора ST(0). В качестве источника выступает 16-или 32-разрядный целочисленный операнд в памяти. fidiv источник — команда делит содержимое ST(0) на значение целочисленного источника. Результат деления запоминается в регистре стека сопроцессора ST(0). В качестве источника выступает 16-или 32-разрядный целочисленный операнд в памяти.
Для команд, реализующих арифметические действия деления и вычитания, важен порядок расположения операндов. По этой причине система команд сопроцессора содержит соответствующие реверсивные команды, повышающие удобство программирования вычислительных алгоритмов. Чтобы отличить эти команды от обычных команд деления и вычитания, их мнемокоды оканчиваются символом R. fisubr источник — команда вычитает значение ST(0) из целочисленного источника. Результат вычитания запоминается в регистре стека сопроцессора ST(0). В качестве источника выступает 16-или 32-разрядный целочисленный операнд в памяти.
fidivr источник — команда делит значение целочисленного источника на содержимое st(0). Результат деления запоминается в регистре стека сопроцессора ST(0).В качестве источника выступает 16-или 32-разрядный целочисленный операнд в памяти.
Вещественные арифметические команды Схема расположения операндов вещественных команд традиционна для команд сопроцессора. Один из операндов располагается в вершине стека сопроцессора — регистре ST(0),куда после выполнения команды записывается и результат, а второй операнд может быть расположен либо в памяти, либо в другом регистре стека сопроцессора. Допустимыми типами операндов в памяти являются все перечисленные ранее вещественные форматы за исключением расширенного. В отличие от целочисленных арифметических команд, вещественные арифметические команды допускают большее разнообразие в сочетании местоположения операндов и самих команд для выполнения конкретного арифметического действия. Команды сложения fadd — команда складывает значения в ST(0) и ST(1). Результат сложения запоминается в регистре стека сопроцессора ST(0). fadd источник — команда складывает значения ST(0) и источника, представляющего адрес ячейки памяти. Результат сложения запоминается в регистре стека сопроцессора ST(0). fadd st(i),st — команда складывает значение в регистре стека сопроцессора ST(i) со значением в вершине стека ST(0).Результат сложения запоминается в регистре ST(i). faddp st(i),st — команда производит сложение вещественных операндов аналогично команде FADD st(i),st, однако последним действием команды является выталкивание значения из вершины стека сопроцессора ST(0). Результат сложения остается в регистре ST(i-1). 2. Клманды вычитания: FSUB — команда вычитает значение в ST(1)из значения в st(0). Результат вычитания запоминается в регистре стека сопроцессора ST(0).
FSUB источник — команда вычитает значение источника из значения в ST(0). Источник представляет адрес ячейки памяти, содержащей допустимое вещественное число. Результат сложения запоминается в регистре стека сопроцессора ST(0). FSUB st(i),st — команда вычитает значение в вершине стека st(0) из значения в регистре стека сопроцессора ST(i). Результат вычитания запоминается в регистре стека сопроцессора ST(i). FSUBP st(i),st — команда вычитает вещественные операнды аналогично команде FSUB st(i),st. Последним действием команды является выталкивание значения из вершины стека сопроцессора ST(0). Результат вычитания остается в регистре ST(i-1). FSUBR st(i),st — команда вычитает значение в вершине стека ST(0) из значения в регистре стека сопроцессора ST(i). Результат вычитания запоминается в вершине стека сопроцессора — регистре ST(0). FSUBRP st(i),st — команда производит вычитание подобно команде FSUBR st(i),st. Последним действием команды является выталкивание значения из вершины стека сопроцессора ST(0).Результат вычитания остается в регистре ST(i-1). 3. Команды умножения вещественных операндов. Операнды располагаются исключительно в стеке сопроцессора. FMUL — команда не имеет операндов. Умножает значения в ST(0) на содержимое в st(1). Результат умножения запоминается в регистре стека сопроцессора ST(0). FMUL st(i) — команда умножает значение в ST(0)на содержимое регистра стека ST(i). Результат умножения запоминается в регистре стека сопроцессора ST(0). FMUL st(i),st – команда умножает значения в ST(0)на содержимое произвольного регистра стека ST(i). Результат умножения запоминается в регистре стека сопроцессора ST(i). FMULP st(i),st — команда производит умножение подобно команде FMUL st(i),st. Последним действием команды является выталкивание значения из вершины стека сопроцессора ST(0).Результат умножения остается в регистре ST(i-1). 4. Команды деления вещественных данных. Операнды этих команд располагаются в стеке сопроцессора: FDIV — команда (без операндов) делит содержимого регистра st(0) на значение регистра сопроцессора ST(1). Результат деления запоминается в регистре стека сопроцессора ST(0). FDIV st(i) – команда делит содержимое регистра ST(0) на содержимое регистра сопроцессора ST(i). Результат деления запоминается в регистре стека сопроцессора st(0).
FDIV st(i),st — команда производит деление аналогично команде FDIV st(i), но результат деления запоминается в регистре стека сопроцессора ST(i). FDIVP st(i),st — команда производит деление аналогично команде FDIV st(i),st. Последним действием команды является выталкивание значения из вершины стека сопроцессора ST(0).Результат деления остается в регистре ST(i-1). FDIVR st(i),st — команда делит содержимое регистра ST(i) на содержимое вершины регистра сопроцессора ST(0). Результат деления запоминается в регистре стека сопроцессора ST(0). FDIVRP st(i),st — команда делит содержимое регистра ST(i)на содержимое вершины регистра сопроцессора ST(0).Результат деления запоминается в регистре стека сопроцессора ST(i), после чего производится выталкивание содержимого ST(0)из стека. Результат деления остается в регистре ST(i-l).
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|