Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
асм.docx
Скачиваний:
16
Добавлен:
27.10.2018
Размер:
644.06 Кб
Скачать

35. Арифметичні команди fpu: додавання, віднімання, множення, ділення.

Припустимі комбінації операцій і операндів для арифметичних операцій наведемо в таблиці:

Форма команди

Мнемоніка

Операнд (и)

Приклад

Стекова

fop

fsub

Регістрова

fop

st(i),st

st,st(i)

fadd st(2),st

fdiv st,st(5)

Регістрова з вилученням зі стека

fopp

st(i),st

fmulp st(3),st

Операнд в пам’яті (дійсний)

fop

[st,]OT/ПТ

fadd beta

Операнд в пам’яті (цілочисловий)

fiop

[st,]ЦС/КЦ

fidiv gamma

Тут квадратні дужки означають неявні операнди, які можна не вказувати в асемблерних командах.

Букви op (operation) означають мнемоніку однієї з наступних операцій:

op=add dst=(dst)+(src)

=sub dst=(dst)–(src)

=subr dst=(src)–(dst)

=mul dst=(dst)(src)

=div dst=(dst)/(src)

=divr dst=(src)/(dst)

Пояснення до таблиці.

Стекова форма – FPU перетворюється в класичний стековий комп’ютер, поле операндів порожнє, джерело – вершина стека st(0), приймач – підвершина стека (st(1)). Виконавши операцію, FPU інкрементує top: і результат розміщується в нову вершину стека.

Регістрова форма – узагальнення стекової: одним з операндів є (st(0)), а другим – будь-який регістр стека; результат можна помістити (завантажити) на місце будь-якого операнда.

Регістрова форма з вилученням зі стека забезпечує вибір вершини стека за джерело, яке потім вилучається за допомогою інкремента top.

Дві форми команд зі зверненням до оперативної пам’яті дозволяють за джерело використовувати дійсне або ціле число в пам’яті. Можна використовувати для адресації операндів в ОП будь-які режими адресації. Однак, не можуть бути дійсні в оперативній пам’яті в форматі РТ, а цілі числа – в форматі ДЦ.

Отже всі , згадані вище операції, мають такі форми:

– дійсні числа fop // src / dst,src

fopp dst,src

– цілі числа fiop src

Мнемоніки арифметичних команд для дійсних чисел: fadd, faddp, fsub, fsubp, fsubr, fsubrp, fmul, fmulp, fdiv, fdivp, fdivr,fdivrp.

Приклади команд:

fadd ; st(1)=(st(1))+(st) і вилучення зі стека

fadd mem32 ; st=(st))+(mem32)

fadd mem64 ; st=(st)+(mem64)

fadd st(i) ; st=(st)+(st(i))

fadd st,st(i) ; st=(st)+(st(i))

fadd st(i),st ; st(i)=(st(i))+(st)

faddp st(i), st ; st(i)=(st(i))+(st) і вилучення зі стека

Мнемоніки команд, один з операндів яких цілочисловий в оперативній пам’яті: fiadd, fisub, fisubr, fimul, fidiv, fidivr.

Якщо використовується стекова форма команди, наприклад fadd (команда без операндів), то транслятор транслює її як faddp st(1),st, яка відрізняється від fadd st(1),st. Тому доцільно (на перших порах) явно вказувати в командах два операнди.

В усіх арифметичних командах може виникати набір особливих випадків. Унікальною є команда ділення, в якій можуть виникнути всі шість особливих випадків.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]