МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
/
Кафедра ЕОМ
Звіт
до лабораторної роботи № 5
з дисципліни
" Системне програмування "
Львів 2015
Мета: Ознайомитись з можливостями програмування на Асемблері під Windows та засвоїти навики використання функцій АРІ.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Незважаючи на те що Wіndows 95/NT/ХР є складнішими операційними системам у порівнянні з DOS, програмувати для них на асемблері набагато простіше. Wіndows-задача запускається в 32-бітному режимі з плоскою (flat) моделлю пам’яті та не передбачає низькорівневого програмування різних пристроїв комп’ютера так як це було у DOS. В існуючих операційних системах програми користуються тільки системними викликами Wіn32 APІ функцій, число яких тут перевищує 2000 (близько 2200 для Wіndows 95 і 2434 для
Wіndows NT).
Всі Wіndows-задачі використовують спеціальний формат виконавчих файлів - формат РЕ (Portable Executable). Такі файли починаються як звичайні eхе-файлb старого зразка (їх також називають MZ за першими двома символами заголовку). Якщо такий файл запустити в DOS, він виконається й видасть повідомлення про помилку (текст повідомлення залежить від використовуваного компілятора), у той час як Wіndows помітить, що після звичайного MZ-заголовка файлу йде РЕ-заголовок, і запустить програму. Це буде означати лише те, що для компіляції програм будуть потрібні інші параметри в командному рядку.
Win32 API (розшифровується як інтерфейс прикладного програмування) - це множина підпрограм-функцій, на яких побудована операційна система Windows, яка використовує 32х-бітну адресацію, починаючи з Windows 95 і закінчуючи Windows XP. Розробники Windows зробили багато зусиль щоб стандартизувати як назви функцій, так і їх параметри. Тому використовувати їх не так важко, якщо засвоїти деякі загальні концепції.
Більшість функцій доступні для програм користувача, які написані для Windows на будь-якій мові програмування (у тому числі і на асемблері). Множина цих функцій розширюється при переході до наступної версії Windows, таким чином, забезпечується сумісність розроблених раніше програм із новими версіями операційної системи. Існують і функції, які не відображені
документації, або для свого застосування вимагають від програми спеціальних прав доступу до пам’яті.
Суть функцій API зрозуміти значно легше, якщо уявити, з яких файлів вони викликаються і на які групи ці функції поділяються. Асемблер - це як раз той зручний і простий засіб, який дозволить вам звертатись безпосередньо до будь-якої функції API, що знаходиться у DLL-файлі.
Секрет пізнання операційної системи через програмування на асемблері полягає у тому, що сам асемблер не накладає жодних обмежень на програму та дані, з якими вона працює. Це повинен робити сам програміст з метою захисту операційної системи від своїх некоректних дій. Таким чином, основною метою системного програмування є написання коректних програм з необмеженими можливостями (в рамках операційної системи). Для збереження коректності необхідно користуватися певними правилами програмування, які будуть зрозумілі на конкретних прикладах.
Типи програм. Процесори сімейства Intel можуть працювати в трьох основних режимах: реальному, віртуальному і захищеному. При включенні комп’ютера його процесор працює в реальному режимі. Після завантаження операційної системи (ОС) процесор може бути переключений програмами ОС
інші режими. В реальному та віртуальному режимах використовується 16-бітна адресація з фіксованими сегментами по 64К. У захищеному режимі використовується 32х-бітна адресація з необмеженими сегментами, і адреса звертання до пам’яті формується (на апаратному рівні) за допомогою дескрипторних таблиць, в яких задаються початкові адреси сегментів, їх довжина, та права доступу до пам'яті і до портів для процесів, які їх використовують. Крім того, в захищеному режимі реалізоване апаратне переключення між задачами за допомогою спеціальних таблиць.
Особливості виклику функцій API. Найбільш перс...