- •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. Спеціальні числові значення та особливі обчислювальні ситуації
-
Команда scas.
Загальний вигляд команди scas dst; (acc) – (dst), модифікуються прапорці, змінюється значення регістра di/edi. Операнди не змінюються. Команда забезпечує віднімання елемента ланцюжка (b, w, d) від вмісту акумулятора (al/ax/eax).
З префіксом repe/repz команду можна використати для пошуку елемента ланцюжка зі значенням, відмінним від значення в акумуляторі. Префікс repne/repnz дозволяє знайти в ланцюжку елемент, який збігається зі значенням в акумуляторі.
Явні мнемоніки: scasb, scasw, scasd.
-
Команда lods.
Загальний вигляд команди lods src; acc=(src), змінюється значення регістра si/esi. Елемент ланцюжка src (b, w, d) завантажується в акумулятор (al/ax/eax) і si/esi просувається на наступний елемент. Стани прапорців не змінюються. Як правило, команда з префіксом повторення не використовується, але її зручно використовувати в програмних циклах замість двох команд:
mov acc,src; inc si/esi (або dec si/esi)
Явні мнемоніки: lodsb, lodsw, lodsd.
-
Команда stos.
Загальний вигляд команди stos dst; dst=(acc), змінюється значення регістра di/edi. Вміст акумулятора (al/ax/eax) запам’ятовується в елемент ланцюжка dst (b, w, d) і di/edi просувається на наступний елемент. Стани прапорців не змінюються. Зручно використовувати з префіксом повторення для ініціювання елементів ланцюжка сталим значенням, наприклад, для очищення текстового екрану в дисплейний буфер потрібно помістити код пробілу.
Явні мнемоніки: stosb, stows, stosd.
-
Команди введення/виведення ланцюжків.
Появилися в мікропроцесорі 80286. Ці команди привілейовані. Команда ins має загальний вигляд ins dst,dx. Приймач dst визначається вмістом двох регістрів es і di/edi, значення яких потрібно визначити до виконання ланцюжкової команди введення. Роль джерела в даній команді виконує порт, номер (адреса) якого повинна знаходитися в регістрі dx. Команда вводить елемент з порта в елемент ланцюжка, змінює значення регістра-індекса di/edi в залежності від значення прапорця df, інкрементуючи або декрементуючи значення в регістрі di/edi на величину, яка визначається довжиною елемента ланцюжка (1 або 2 або 4). Природно, що прапорець df потрібно ініціювати.
Команду можна використовувати з префіксом повторення rep, лічильник в cx/ecx. Можна використовувати явні мнемоніки: insb, insw, insd.
Команда out має наступний загальний вигляд: out dx,src. Номер порта потрібно заздалегідь записати в регістр dx. Адреса ланцюжка, з якого відбуватиметься виведення в порт, визначається вмістом регістрів ds і si/esi. Команда виводить значення з елемента ланцюжка в порт, адреса якого в регістрі dx, змінює значення регістра-індекса si/esi в залежності від значення прапорця df, інкрементуючи або декрементуючи значення в регістрі si/esi на величину, яка визначається довжиною елемента ланцюжка (1 або 2 або 4). Природно, що прапорець df потрібно ініціювати.
Команду можна використовувати з префіксом повторення rep, лічильник в cx/ecx. Можна використовувати явні мнемоніки: outb, outw, outd.
Якщо швидкодії пристрою, пов’язаного з вхідним або вихідним портом, недостатньо для синхронної роботи з процесором, то швидкість даних можна зменшити за допомогою програмної затримки (циклу з певної кількості команд nop).