
- •Системне програмування, характерні особливості.
- •Асемблер. Варіанти спільного використання асемблера і мов високого рівня.
- •Інструментальні засоби розробки програм на мові Асемблер.
- •Регістри.
- •Користувацькі регістри.
- •Сегментні регістри.
- •Організація роботи з пам’ятю.
- •Сегментна модель пам’яті.
- •Специфікація типів даних
- •Набір команд мікропроцесора.
- •11. Використання арі-функцій.
- •12. Структура програми, приклад простої програми для Windows.
- •13. Передача параметрів через стек
- •14. Використання ресурсів при роботі з діалоговими вікнами.
- •15.Використання ресурсів при роботі з меню.
- •16. Використання акселераторів у файлах ресурсу.
- •17. Ресурси. Переваги використання ресурсів у програмах.
- •18. Використання ресурсів при роботі з іконками, рядками, курсорами.
- •21. Потоки, взаємодія потоків.
- •22. Семафори блять! Події нахуй!
- •23. Критичні секції.
Сегментні регістри.
У програмній моделі мікропроцесора є 6 сегментних регістри. Це регістри типу: КС, СС, DC, EC, GC ,FC. Існування такого типу регістрів зумовлено специфікою організації і використання пам’яті мікропроцесора. Вона полягає в тому що мікропроцесор апаратно підтримує структуру організації програми у вигляді 3 частин – сегментів. Така організація пам’яті називається – сегментною. Мікропроцесор підтримує наступні типи сегментів:
Сегмент коду – містить команда для доступу до програми. Для використання цього сегмента служить регістр КС – сегментний регістр коду. Він містить в собі адресу сегмента з машинними командами до якого має доступ мікропроцесор .
Сегмент даних – містить дані оброблювальні програмою. Для доступу до цього сегмента служить: DC – сегментний регістр даних, який зберігає адресу сегмента даних поточної програми.
Сегмент стека – цей сегмент є областю пам’яті, що називається стеком. Роботу зі стеком мікропроцесор організовує наступним чином: Останній записаний в цю область елемент вибирається першим для доступу до цього сегмента служить регістр СС – сегментний регістр даних який містить адресу сегмента у стеку. Три останніх регістри є зарезервованими, тип доступу по них ініціалізується перериваннями при записі або читанні даних.
Організація роботи з пам’ятю.
Фізична пам’ять до якої мікропроцесор має доступ називається оперативною пам’ятю. На найнижчому рівні пам’ять комп’ютера як масив бітів. Для фізичної реалізації бітів і роботи з ними ідеальною підходить логічна схема побудована за принципом (0 і 1). Але мікропроцесору незручно працювати з пам’яттю на рівні бітів тому його робота з ОП побудована на рівні байтів. Механічне управління пам’яттю повністю апаратне , це означає, що програма не може сама сформувати фізичну адресу пам’яті на шині адрес, їй доводить підкорятися правилам мікропроцесора. Такий механізм дозволяє забезпечити:
Компактність зберігання адрес в машинному коді.
Гнучкий механізм адресації
Захист адресних просторів задач у багатозадачних системах.
Підтримку віртуальної пам’яті.
Мікропроцесор апаратно підтримує дві моделі використання ОП:
Сегментну модель у якій для програм виділяється безперервна область пам’яті (сегмент), а саме програма може звертатися тільки до даних що знаходяться в області такого сегмента.
Сторінкова модель. Таку модель можна розглянути, як надбудову сегментивної моделі в разі її використання ОП розглядається як сукупність фіксованих блоків певного розміру. Основою використання цієї моделі пов’язана з організації віртуальної пам’яті, що дозволяє ОС використовувати в роботі програмний простір більший за об’єм пам’яті.
Сегментна модель пам’яті.
Сегментація – це механізм адресації, який забезпечує існування декількох незалежних адресних простора в межах однієї задачі. В основі механізму сегментації лежить поняття сегменту що є незалежним блоком пам’яті і підтримується на апаратному рівні.
Розрізняють 3 основні моделі сегментної організації пам’яті:
Сегментна модель пам’яті реального режиму
Захищеного режиму
Суцільна модель пам’яті захищеного режиму.
Регістри ESP (SP) – покажчик пам’яті, який вказує на вершину стека. Також програмою може бути змінено регістр EIP – покажчик команд. Цей регістр вказує на інструкцію, яка буде виконуватись наступною . Значення цього регістра змін безпосередньо контролером процесора згідно з інструкціями отримання з пам’яті.
Ознаки нуля 2F (Zero Flag) -1, якщо результат попередньої операції =0.
Ознаки знаку SF (Sin Flag) -1, якщо результатом попередньої операції від’ємний.
Ознака переносу CF (Carry Flag) -1, якщо біт був «перенесений» і cmd бітом, більшого порядку.
Ознака переривання IF-1, якщо переривання процесором дозволенні
Ознаки на пряму DF – використовуються для обробки рядків.