Главная | Обратная связь
МегаЛекции

Целочисленные арифметические команды




Целочисленные арифметические команды предназначены для работы на тех участках вычислительных алгоритмов, где в качестве исходных данных используются целые числа в памяти в формате слово и короткое слово, имеющие размерность 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- 2017 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов.