- •1. Що таке Асемблер?
- •9.Які ресурси середовища Intel64 для виконання програм
- •10. Режимы работы процессоров ia-32 (Режими роботи процесорів архітектури x86)
- •1 Реальный режим
- •2 Режим системного управления
- •3 Защищенный режим
- •11) Який адресний простір архітектури ia-32 і чим він визначається?
- •12 Який адресний простір архітектури Intel64 і чим він визначається?
- •14.Способи переведення у іншу систему числення. Приклади
- •13. Позиційні системи числення. Поняття та основні формули
- •15. Способи представлення від'ємних чисел
- •16. Додатковий код. Приклади
- •17. Зміщений код. Приклади
- •18 Формати з плаваючою точкою. Стандарти
- •19 Стандартний двійковий 32-бітовий формат з плаваючою точкою
- •20 Тандартний двійковий 64-бітовий формат з плаваючою точкою
- •21.Стандартний двійковий 80-бітовий формат з плаваючою точкою
- •22. Порівняння основних стандартних двійкових форматів з плаваючою точкою
- •23. Фізична память. Як узнати розрядність адрес?
- •24. Моделі пам'яті у процесорах архітектури x86
- •25. Сегментована пам'ять
- •26. Flat - модель пам'яті
- •27. Сторінкова пам'ять
- •28. Регістри процесора архітектури ia-32
- •29. Регістри процесора архітектури Intel64
- •30. Регістри загального призначення.
- •31. Сегментні регістри
- •8 Прапорів полягання
- •1 Прапор управління
- •5 Системних прапорів
- •35 Операнди команд та способи адресації операндів
- •36 Безпосередні операнди команд
- •37 Регістрові операнди команд
- •38 Способи вказування комірок пам'яті у якості операндів команд
- •39. Що таке опосередкована адресація стосовно вказування операнду команди?
- •40. Що таке база, індекс, зміщення, масштаб у операнді команди?
- •41Полное определение
- •44. Структура вихідного тексту програми на Асемблері
- •45.Директиви Асемблера. Найпопулярніші на вашу думку директиви
- •46.Директиви вказування типу процесора та моделі пам'яті
- •47. Директиви створення даних
- •48. Директива invoke. Приклади
- •49. Директива align. Приклади
- •50. Базові типи даних архітектури процесорів x86
- •51. Числові типи даних
- •52.Упаковані simd типи даних
- •Використання
- •53. Основні групи команд процесорів архітектури x86
- •54. Команди копіювання даних
- •Xchg Обмін данімі між операндами
- •55. Команди додавання цілих чисел
- •56. Команди віднімання цілих чисел
- •57. Команди множення цілих чисел
- •58. Команди ділення цілих чисел
- •59. Побітові логічні команди
- •60. Програмування читання та запису окремих бітів
- •61. Команди зсувів
- •62. Команди циклічного зсуву
- •63 Команды перехода
- •64 Реализация if-then-else
- •65, 66 Програмування циклів на асемблері?
- •67 Цикл з постумовою (рис. 2)
- •68. Програмування циклу зі збереженням біту переносу cf
- •69. Програмування циклу на основі команд loop
- •70. Програмування вкладених циклів
- •71. Команди обробки рядків даних
- •72. Команди stos, stoSx
- •73. Команди movs,movsx.
- •74. Префікс повторення rep та його різновиди.
- •75.Що таке структурованість та модульність програм. Наведіть приклади.
- •76. Макроси. Приклади програмування
- •77. Процедури. Визначення, виклик. Приклади програмування
- •78. Способи передавання значень параметрів процедурам
- •79. Локальні дані процедур
- •80. Пролог та епілог процедури
- •81. Стековий кадр процедури
- •82. Написання модульних програм на Асемблері
- •83. Можливості використання мов високого рівня сумісно з Асемблером
- •84. Конвенції виклику процедур
- •85. Конвенція cdecl. Приклад програмування.
- •86. Конвенція stdcall. Приклад програмування.
- •87. Асемблерні вставки у мовах високого рівня.
- •88. Середовище x87 fpu
- •89. Команди x87 fpu. Приклад програми.
- •90. Стек даних x87 fpu. Приклад програми.
- •91. Команди simd
- •92. Розширення mmx
- •93. Розширення sse
- •94. Типи даних sse
- •95. Векторны команди sse
- •96 Горизонтальне додавання
- •97. Команди movups та movaps. Приклад використання
- •98. Векторні команди множення sse. Приклад використання
- •99. Векторні команди додавання sse. Приклад використання
- •100. Команда shufps та її застосування
- •101. Розширення avx
- •102. Типи даних avx
- •103. Команды avx
- •104. Особенности команд avx по отношению к sse
- •105. Эволюция simd-расширений системы команд процессоров архитектуры х86
31. Сегментні регістри
У програмній моделі мікропроцесора є шість сегментних регістрів: cs, ss, ds, es, gs, fs. Їх існування обумовлено специфікою організації і використовування оперативної пам'яті мікропроцесорами Intel. Вона полягає в тому, що мікропроцесор апаратний підтримує структурну організацію програми у вигляді трьох частин, званих сегментами. Для того, щоб вказати на сегменти, до яких програма має доступ в конкретний момент часу, і призначені сегментні регістри. В цих регістрах містяться адреси пам'яті з яких починаються відповідні сегменти. Логіка обробки машинної команди побудована так, що при вибірці команди, доступі до даних програми або до стека неявно використовуються адреси в цілком певних сегментних регістрах. Мікропроцесор підтримує наступні типи сегментів:
1. Сегмент коду. Містить команди програми. Для доступу до цього сегменту служить регістр cs (code segment register) — сегментний регістр коду. Він містить адресу сегменту з машинними командами, до якого має доступ мікропроцесор.
2. Сегмент даних. Містить оброблювані програмою дані. Для доступу до цього сегменту служить регістр ds (data segment register) — сегментний регістр даних, який береже адресу сегменту даних поточної програми.
3. Сегмент стека. Цей сегмент є областю пам'яті, званою стеком. Роботу із стеком мікропроцесор організовує за наступним принципом: останній записаний в цю область елемент вибирається першим. Для доступу до цього сегменту служить регістр ss (stack segment register) — сегментний регістр стека, що містить адресу сегменту стека.
Джерело: http://kit.znu.edu.ua/Meth/arch1.pdf
32. Регістр EFALGS
EFLAGS — регістр прапорів. Розрядність eflags/flags — 32/16 біт. Окремі біти даного регістра мають певне функціональне призначення і називаються прапорами. Молодша частина цього регістра повністю аналогічна регістру flags для i8086.
Виходячи з особливостей використовування, прапори регістра eflags/flags можна розділити на три групи:
8 Прапорів полягання
Ці прапори можуть змінюватися після виконання машинних команд. Прапори полягання регістра eflags відображають особливості результату виконання арифметичних або логічних операцій. Це дає можливість аналізувати полягання обчислювального процесу і реагувати на нього за допомогою команд умовних переходів і викликів підпрограм.
1 Прапор управління
Позначається df (Directory Flag). Він знаходиться в 10-у біті регістра eflags і використовується ланцюжковимі командами.
5 Системних прапорів
Керують уведення-виведенням, маскованими перериваннями, відладкою, перемиканням між задачами і віртуальним режимом 8086.
Джерело: http://kit.znu.edu.ua/Meth/arch1.pdf
33. Регістр ESP
Регістр ESP / SP завжди вказує на вершину стека , тобто містить зсув , по якому в стек був занесений останній елемент . Команди роботи зі стеком неявно змінюють цей регістр так , щоб він вказував завжди на останній записаний в стек елемент . Якщо стек порожній , то значення esp одно адресою останнього байта сегмента , виділеного під стек . При занесенні елемента в стек процесор зменшує значення регістра esp , а потім записує елемент за адресою нової вершини. При отриманні даних з стека процесор копіює елемент, розташований за адресою вершини , а потім збільшує значення регістра покажчика стека esp . Таким чином, виходить , що стек росте вниз , у бік зменшення адрес.
Джерело: http://otvet.mail.ru/question/69008232
34 Регістр EIP
EIP
Начиная с процессора 80386 была введена 32-разрядная версия регистра-указателя — EIP (англ. Extended Instruction Pointer). Принцип работы EIP в целом схож с работой регистра IP. Основная разница состоит в том, что в защищённом режиме, в отличие от реального режима, регистр CS является селектором.
IP (англ. Instruction Pointer) — регистр, содержащий адрес-смещение следующей команды, подлежащей исполнению, относительно кодового сегмента CS в процессорах семейства x86.
Регистр IP связан с CS в виде CS:IP, где CS является текущим кодовым сегментом, а IP — текущим смещением относительно этого сегмента.
Принцип работы
Например, CS содержит значение 2CB5[0]H, в регистре IP хранится смещение123H.
Адрес следующей инструкции, подлежащей исполнению, вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:
2CB50H + 123H = 2CC73H – адрес следующей инструкции для исполнения
При выполнении текущей инструкции процессор автоматически изменяет значение в регистре IP
http://ru.wikipedia.org/wiki/Регистр_процессора
