Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздаточный материалМПС_микроЭВМ_ред.3 ФАВТ.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
9 Мб
Скачать
☆

6.4. Базовые арифметические команды

Арифметические команды выполняют такие операции, как сложение, вычитание, умножение, деление, извлечение квадратного корня, нахождение частичного остатка, округление и т.п. В табл. 5 представлены базовые арифметические команды.

Базовые арифметические команды Таблица 5

БАЗОВЫЕ АРИФМЕТИЧЕСКИЕ КОМАНДЫ

Команда

Описание

Формальное описание

Примечание

FADD m32fp

FADD m64fp

FADD ST(0), ST(i)

FADD ST(i), ST(0)

FADDP ST(i),ST(0)

сложить с вещественным

сложить и вытолкнуть

ST(0)  ST(0)+m32fp

ST(0)  ST(0)+m64fp

ST(0)  ST(0)+ST(i)

ST(i)  ST(i)+ST(0)

ST(i)  ST(i)+ST(0)

TOP  TOP + 1

ВВ + (ВВ  КВ)

ВВ + (ВВ  ДВ)

Продолжение таблицы 5

FADDP

FIADD m16int

FIADD m32int

сложить с целым

ST(1)  ST(1)+ST(0)

TOP  TOP + 1

ST(0)  ST(0) + m16int

ST(0)  ST(0) + m32int

ВВ + (ВВ  ЦС)

ВВ + (ВВ  КЦ)

FSUB m32fp

FSUB m64fp

FSUB ST(0), ST(i)

FSUB ST(i), ST(0)

FSUBP ST(i),ST(0)

FSUBP

FISUB m16int

FISUB m32int

вычесть вещественное

вычесть и вытолкнуть

вычесть целое

ST(0)  ST(0) - m32fp

ST(0)  ST(0) - m64fp

ST(0)  ST(0) - ST(i)

ST(i)  ST(i) - ST(0)

ST(i)  ST(i) - ST(0)

TOP  TOP + 1

ST(1)  ST(1) - ST(0)

TOP  TOP + 1

ST(0)  ST(0) - m16int

ST(0)  ST(0) - m32int

ВВ - (ВВ  КВ)

ВВ - (ВВ  ДВ)

ВВ - (ВВ  ЦС)

ВВ - (ВВ  КЦ)

FSUBR m32fp

FSUBR m64fp

FSUBR ST(0), ST(i)

FSUBR ST(i), ST(0)

FSUBRP ST(i),ST(0)

FSUBRP

вычесть вещественное с реверсом

вычесть с реверсом и вытолкнуть

ST(0)  m32fp – ST(0)

ST(0)  m64fp – ST(0)

ST(0)  ST(i) - ST(0)

ST(i)  ST(0) - ST(i)

ST(i)  ST(0) - ST(i)

TOP  TOP + 1

ST(1)  ST(0) - ST(1)

TOP  TOP + 1

(ВВ  КВ) - ВВ

(ВВ  ДВ) - ВВ

FISUBR m16int

FISUBR m32int

вычесть целое с реверсом

ST(0)  m16int – ST(0)

ST(0)  m32int – ST(0)

(ВВ  ЦС) - ВВ

(ВВ  КЦ) - ВВ

FMUL m32fp

FMUL m64fp

FMUL ST(0), ST(i)

FMUL ST(i), ST(0)

FMULP ST(i),ST(0)

умножить вещественное

умножить и вытолкнуть

ST(0)  ST(0) * m32fp

ST(0)  ST(0) * m64fp

ST(0)  ST(0) * ST(i)

ST(i)  ST(i) * ST(0)

ST(i)  ST(i) * ST(0)

TOP  TOP + 1

ВВ * (ВВ  КВ)

ВВ * (ВВ  ДВ)

Продолжение табл. 5

БАЗОВЫЕ АРИФМЕТИЧЕСКИЕ КОМАНДЫ

Команда

Описание

Формальное описание

Примечание

FMULP

FIMUL m16int

FIMUL m32int

умножить целое

ST(1)  ST(1) * ST(0)

TOP  TOP + 1

ST(0)  ST(0) * m16int

ST(0)  ST(0) * m32int

ВВ * (ВВ  ЦС)

ВВ * (ВВ  КЦ)

FDIV m32fp

FDIV m64fp

FDIV ST(0), ST(i)

FDIV ST(i), ST(0)

FDIVP ST(i),ST(0)

FDIVP

FIDIV m16int

FIDIV m32int

делить вещественное

делить и вытолкнуть

делить целое

ST(0)  ST(0) / m32fp

ST(0)  ST(0) / m64fp

ST(0)  ST(0) / ST(i)

ST(i)  ST(i) / ST(0)

ST(i)  ST(i) / ST(0)

TOP  TOP + 1

ST(1)  ST(1) / ST(0)

TOP  TOP + 1

ST(0)  ST(0) / m16int

ST(0)  ST(0) / m32int

ВВ / (ВВ  КВ)

ВВ / (ВВ  ДВ)

ВВ / (ВВ  ЦС)

ВВ / (ВВ  КЦ)

FDIVR m32fp

FDIVR m64fp

FDIVR ST(0), ST(i)

FDIVR ST(i), ST(0)

делить вещественное с реверсом

ST(0)  m32fp / ST(0)

ST(0)  m64fp / ST(0)

ST(0)  ST(i) / ST(0)

ST(i)  ST(0) / ST(i)

(ВВ  КВ) / ВВ

(ВВ  ДВ) / ВВ

FDIVR m32fp

FDIVR m64fp

FDIVR ST(0), ST(i)

FDIVR ST(i), ST(0)

FDIVRP ST(i),ST(0)

FDIVRP

FIDIVR m16int

FIDIVR m32int

делить вещественное с реверсом

делить с реверсом и вытолкнуть

делить целое с реверсом

ST(0)  m32fp / ST(0)

ST(0)  m64fp / ST(0)

ST(0)  ST(i) / ST(0)

ST(i)  ST(0) / ST(i)

ST(i)  ST(0) / ST(i)

TOP  TOP + 1

ST(1)  ST(0) / ST(1)

TOP  TOP + 1

ST(0)  m16int / ST(0)

ST(0)  m32int / ST(0)

(ВВ  КВ) / ВВ

(ВВ  ДВ) / ВВ

(ВВ  ЦС) / ВВ

(ВВ  КЦ) / ВВ

Окончание таблицы 5

БАЗОВЫЕ АРИФМЕТИЧЕСКИЕ КОМАНДЫ

Команда

Описание

Формальное описание

Примечание

FPREM

частичный остаток в стиле МСП i8087

q = ОЦУ0 [ST(0) / ST(1)]

ST(0)  ST(0) – (q*ST(1))

ОЦУ0 - округление до целого путем усечения к нулю

FPREM1

частичный остаток в стиле стандарта IEEE

q = ОБЦ [ST(0) / ST(1)]

ST(0)  ST(0) – (q*ST(1))

ОБЦ - округление до ближайшего целого

FABS

модуль

ST(0)  | ST(0) |

очищает знак в ST(0)

FCHS

изменить знак

sb(ST(0))  not (sb(ST(0))

sb – SignBit

FRNDINT

округлить до целого

ST(0)  ОЦ (ST(0))

ОЦ – округлить до целого

FSCALE

возвести в степень

ST(0)  ST(0)*2ОЦУ0 [ST(1)]

ОЦУ0 - округление до целого путем усечения к нулю

FSQRT

квадратный корень

ST(0)  SquareRoot (ST(0))

FXTRACT

выделение мантиссы и порядка

temp  мантисса (ST(0))

ST(0)  порядок (ST(0))

TOP  TOP – 1

ST(0)  temp