- •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. Спеціальні числові значення та особливі обчислювальні ситуації
14. Команди передачі даних movXx. Команда setCc. Команда xlat
У процесорі 80386 та i486 введено нові команди передач даних, які використовуються для спрощення програмування типових задач.
Команда movXx (MOVe with Sign/Zero eXtension) передачі зі знаковим/нульовим розширенням. Під час пересилки відбувається розширення розміру операнда. Основні форми:
movXx reg16, reg/mem8; розширення байта до слова
movXx reg32, reg/mem8; розширення байта до подвійного слова
movXx reg32, reg/mem16; розширення слова до подвійного слова.
Команда movsx передає 8-бітове джерело в 16- або 32-бітовий приймач або 16-бітове джерело в 32-бітовий приймач з копіюванням старшого (знакового) біта джерела в старші біти приймача. Приймачем може бути тільки загальний регістр. Режим адресації джерела будь-який. Команда movzx аналогічна команді movsx, але записує в старші біти приймача нулі.
Дія універсальної команди mov розширена в мікропроцесорах 80386 та i486 на нові регістри: керування crn, перевірки drn та налагодження trn:
mov reg32, crn; mov crn, reg32,
mov reg32, drn; mov drn, reg32,
mov reg32, trn; mov trn, reg32,
де reg32 – загальний з2-бітовий регістр.
Команда setCC – установлення байта за умовою призначена для того, щоб зберегти зафіксовану прапорцями умову для подальших обчислень. Загальна форма
setCC reg/mem8
де
.
Це означає, що символи СС можуть набувати значень, які знаходяться у фігурних дужках. Символи CC (Code Condition – код умови) у коді команди визначають умову, яка перевіряється. Код умови визначається попередніми командами певними значеннями відповідних прапорців. Якщо умова справджується, то в байт reg/mem8 записується 01h, Якщо ж умова не справджується – то 00h.
Команда setCC часто застосовується для побудови таблиць за результатами декількох порівнянь або віднімань. Її зручно використати там, де потрібна обробка вкладених рівнів умов.
15. Команди додавання, віднімання і порівняння
Результати виконання арифметичних операцій фіксуються в шести прапорцях of, cf, sf, pf, af, cf регістра eflags. Стан прапорців можна проаналізувати за допомогою команд умовного переходу. Передбачена також команда into – переривання при переповненні (прапорець of=1).
Команди додавання. Дві основні команди додавання add і adc додавання з перенесенням. Вони мають узагальнений вигляд (після крапки з комою вказано алгоритм виконання):
add dst, src; dst=(dst)+(src) і формуються прапорці
adc dst, src; dst=(dst)+(src)+(cf) і формуються прапорці.
Форми команди add:
add reg/mem, imm; Розміри 8/16/32
add reg, reg/mem; Розміри 8/16/32
add reg/mem, reg; Розміри 8/16/32
add reg/mem16, imm8; Приймач 16, джерело 8 бітів
add reg/mem32, imm8; Приймач 32, джерело 8 бітів
У двох останніх формах розмір безпосереднього операнда менший розміру приймача, тому джерело розширюється зі знаком до розміру приймача. Такі ж форми має команда adc.
Якщо додаються операнди як без знакові числа, то значення прапорця cf=1 означає, що відбулося переповнення. Якщо ж додаються знакові числа, то переповнення тут фіксує прапорець of, а значення прапорця cf не несе корисної інформації.
До команд додавання відносять також команду
inc dst; dst=(dst)+1.
Операндом команди може бути регістр або комірка пам’яті