![](/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. Спеціальні числові значення та особливі обчислювальні ситуації
39. Команди керування пристроєм fpu
Команд керування
пристроєм є не так багато. Одна з них,
,
використовується для умовного переходу.
Інші команди в обчисленнях майже не
використовуються і призначені для
керування FPU
на системному рівні. Багато команд мають
альтернативні мнемоніки, другою буквою
яких є буква
,
яка означає
–
не очікувати. Наявність цієї букви
полягає в тому, що відповідна команда
не перевіряє незамасковані особливі
випадки і виконується негайно. Тоді
транслятор не вставляє перед нею команду
,
тому перед її виконанням FPU
не перевіряє наявність особливих
випадків з плаваючою крапкою.
Усі інші команди
з плаваючою крапкою процесор синхронізує
автоматично; всі операнди передаються
до ініціалізації наступної команди.
Тому для правильного виконання команд,
завдяки автоматичній синхронізації,
не потрібна попередня команда
.
Синхронізація ж
особливих випадків ґрунтується на
використанні команди
.
Оскільки цілочисловий пристрій і FPU
працюють паралельно, то можливо, що
особливий випадок з плаваючою крапкою
зруйнує важливу інформацію до виклику
обробника особливого випадку. Застосування
команди
у потрібному місці дозволяє уникнути
такої ситуації.
Команда
ініціалізації FPU:
;
;
;
;
;
;
;
.
– (заокруглення
до найближчого, всі особливі випадки
замасковані, максимальна 64-бітова
точність). Слово стану
,
– вершина стека. Всі регістри стека
визначені порожніми. Вказівники помилки
(команди і даних) установлені в нуль.
Першою командою після вмикання живлення
має бути команда
.
Команда
перед виконанням ініціалізації контролює
помилки з плаваючою крапкою,
– не контролює.
Команда
–
завантажує в
новий вміст з
(це повинно бути ціле слово в оперативній
пам’яті). Відзначимо, якщо в
установлено будь-який прапорець
особливого випадку, то завантаження
нового слова керування може призвести
до формування особливого випадку перед
виконанням наступної команди. Тому
рекомендується перед завантаженням
нового значення слова керування
установити в нуль прапорці в
.
Команди
і
– зберігають
і
в оперативній пам’яті або в регістрі
.
Команди
і
контролюють наявність особливих
випадків, на відміну від команд
і
.
Команда
–
в слові стану
установлює в нуль прапорці особливих
випадків біти від 0 до 7 (
,
та
)
і
(біт 15). Дану команду має виконати
процедура обробки особливого випадку
перед поверненням в перервану програму,
інакше буде сформоване нове переривання
(яке можливо тільки що аналізувалося).
Присутність або відсутність параметра-букви
означає, як і в попередніх командах,
контролює або не контролює відповідно
команда особливий випадок перед своїм
виконанням. Надалі цей факт притаманний
усім командам, в яких може бути цей
параметр.
Команда
– зберігає поточний повний стан FPU
в приймачі
,
а потім установлює початковий його стан
(як і команда
).
Операнд
– 94-байтовий для
і 108-байтовий для
.
Команди
і
не зберігають стан FPU
до призупинення всіх його дій. Якщо
програма повинна читати образ стану
після команди збереження, потрібно
використати команду
,
що забезпечує коректне завершення
збереження.
Команда
–
перезавантажує стан FPU
з області оперативної пам’яті. Ці дані
повинні були бути записані раніше
командою
або
і не повинні модифікуватися іншими
командами. Якщо образ стану має
незамаскований особливий випадок, його
завантаження даною командою зумовлює
особливий випадок.
Команди
і
– зберігають поточне середовище в
,
а потім маскують всі особливі випадки
з плаваючою крапкою. Поточне середовище:
і вказівники помилок (даних і команди).
Ці команди не зберігають середовище до
призупинення всіх дій FPU.
Команда
–
перезавантажує середовище FPU
з області оперативної пам’яті
.
Команди
і
– відповідно виконують інкремент і
декремент вказівника стека і не передають
ніяких даних. Регістр попередньої
вершини стека при виконанні команди
не змінюється і не відзначається як
порожній, тобто дія цієї команди не
еквівалентна вилученню зі стека. Команда
виконує ніби запис у стек, але дане, яке
записується відсутнє, регістр тегів не
змінюється.
Команда
– записує в тег вказаного регістра
,
тобто відзначає регістр як порожній,
але вміст регістра
і вказівник стека
не змінюються.
Команда
– заставляє FPU
перед продовженням обчислень перевірити
незамасковані особливі випадки, які
очікують аналізу програмами – обробниками
особливих випадків.
Команда
– є порожньою командою, яка не виконує
ніяких дій.
Наведемо таблицю команд керування FPU.
№ п/п |
Мнемоніка |
Операція |
1 |
|
Ініціалізація FPU |
2 |
|
Завантаження слова керування |
3 |
|
Збереження слова керування |
4 |
|
Збереження слова стану |
5 |
|
Установити
в нуль прапорці ОВ в
|
6 |
|
Завантаження середовища |
7 |
|
Збереження середовища |
8 |
|
Збереження повного стану |
9 |
|
Відновлення повного стану |
10 |
|
Інкремент
|
11 |
|
Декремент
|
12 |
|
Звільнення регістра |
13 |
|
Порожня команда |
14 |
|
Команда очікування |