![](/user_photo/2706_HbeT2.jpg)
- •2. Структура регістра eflags
- •3. Організація оперативної пам’яті. Сегментована модель оперативної пам’яті. Формування адреси в реальному режимі
- •4. Формати і типи даних. Формат машинних команд. Система переривань
- •5. Десяткова арифметика. Форми зображення десяткових чисел
- •7. Ділення ascii-чисел.
- •6. Директиви сегментації. Директиви proc і endp
- •7. Опис простих типів мовою асемблера
- •10. Синтаксис команд мовою асемблера
- •11. Команди передач даних
- •Xchg ax, data1; (data2) в data1, (ax) – початковий стан
- •12. Стекові передачі даних
- •13. Передачі адресних об’єктів, команди введення-виведення і передачі прапорців
- •14. Команди передачі даних movXx. Команда setCc. Команда xlat
- •15. Команди додавання, віднімання і порівняння
- •Inc reg/mem; Розмір 8/16/32.
- •16. Команди множення і ділення
- •20. Команди логічних операцій. Команди зсувів
- •22. Команди операцій з двійковими ланцюжками
- •23. Команди передачі керування (безумовні переходи)
- •24. Команди умовних переходів і команди керування циклами
- •26. Команди переривань і повернення з переривань
- •Загальні поняття.
- •Використання префіксів в ланцюжкових командах.
- •Команда movs.
- •Команда cmps.
- •Команда scas.
- •Команда lods.
- •Команда stos.
- •Команди введення/виведення ланцюжків.
- •29. Команди керування процесором
- •Команди, які впливають на прапорці.
- •Команди синхронізації.
- •Системні команди
- •31. Формати даних, які підтримуються fpu
- •Параметри для трьох форматів в таблиці
- •32. Програмна модель fpu
- •33. Слово стану sw і слово керування cw пристрою fpu.
- •Відповідність між кодом умови і прапорцями
- •34. Команди передач даних fpu: завантаження, збереження, збереження з вибором зі стека, обміну, завантаження сталих.
- •35. Арифметичні команди fpu: додавання, віднімання, множення, ділення.
- •36. Додаткові арифметичні команди fpu.
- •37. Команди порівняння fpu
- •38. Команди трансцендентних функцій. Алгоритми обчислення значень функцій і та логарифмів за будь-якою основою.
- •39. Команди керування пристроєм fpu
- •40. Спеціальні числові значення та особливі обчислювальні ситуації
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. Тому доцільно (на перших порах) явно вказувати в командах два операнди.
В усіх арифметичних командах може виникати набір особливих випадків. Унікальною є команда ділення, в якій можуть виникнути всі шість особливих випадків.