Копіювання буфера екрану в файл - Курсовая работа

бесплатно 0
4.5 58
Розробка програми "Копіювання буфера екрану в файл" з допомогою мови Асемблер. Резидентний обробник переривань. Захист резидентної програми від повторної установки. Вивантаження резидентної програми з пам"яті. Методика і алгоритм вирішення завдання.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Чим нижчий рівень мови програмування, тим ближча специфіка роботи програми до самого процесора, для якого вона й була написана. Вважається, що мови низького рівня складніші й потребують більш вузької спеціалізації програміста, оскільки програма написана на асемблері для одного типу процесорів виявиться не завжди придатною для роботи з іншими процесорами. Мова асемблера будь-якого процесора суттєво складніша будь-якої мови високого рівня. Щоб скористатись всіма можливостями мови асемблера, треба по крайній мірі знати команди мікропроцесора, а їх число з усіма можливими варіантами переважає 100, їх кількість значно перевищує кількість операторів і ключових слів інших мов високого рівня. Програміст, який використовує мови асемблера повинен сам слідкувати за розподілом памяті та вмістом регістрів, щоб коректно розподіляти і оперувати памяттю, в мовах високого рівня це робиться автоматично при допомозі компілятора, але ця обставина має перевагу: можна оптимально розташувати дані в памяті, забезпечити максимальну швидкість виконання та мінімальну довжину програми.В даній курсовій роботі описується програма копіювання буферу екрану в файл.Великий клас програм, що забезпечують функціонування обчислювальної системи (драйвери пристроїв, програми шифрації і захисти даних, русифікатори, обслуговуючі програми типу електронних блокнотів або калькуляторів і ін.), повинні постійно знаходитися в памяті і швидко реагувати на запити користувача або на якісь події, що відбуваються в обчислювальній системі. Такі програми носять назви програм, резидентних в памяті (Terminate and Stay Resident, TSR), або просто резидентних програм. Зробити резидентною можна як програму типу СОМ, так і програму тип ЕХЕ, проте з огляду на те, що резидентна програма повинна бути максимально компактною, частіше за все як резидентні використовують програми типу СОМ. Розглянемо типову структуру резидентної програми і системні засоби залишення її в памяті після ініціалізації (рисунок. Ця функція не може залишати резидентною програми розміром більше 64 Кб, але багато програм, написаних на асемблері, відповідають цій умові.Якщо, проте, як це звичайно і має місце, резидентна програма в процесі своєї роботи передасть управління старому обробнику перехопленого нею переривання, то нова копія резидентної програми, що зберегла в процесі ініціалізації адресу першої копії як вмісту перехоплюваного вектора, буде при кожній активізації викликати і першу копію. Фактично всі резидентні програми, як системні, так і прикладні, мають такі обробники, через яких здійснюється не тільки перевірка на повторну установку, але і взагалі звязок з резидентною програмою: зміна режиму її роботи або отримання від неї в транзитну програму якихось параметрів. Таким чином, обробник переривання 2Fh резидентної програми повинен, перш за все, перевірити номер функції в регістрі АН; при виявленні "своєї функції" обробник аналізує вміст регістра AL і виконує дії, що зажадалися, після чого командою iret передасть управління програмі що його викликала. В результаті виклик int 2Fh з будь-якої програми проходитиме по ланцюжку через все завантажені резидентні програми, поки не досягне "своєї програми" або не поверне управління в ту, що викликала програму через обробник DOS (який, очевидно, завжди буде самим останнім в ланцюжку) [4]. В цьому випадку, якщо програма, що викликала, з імям DUMP.COM (тобто друга копія резидентної програми, що зясовує, чи можна їй залишитися резидентною в памяті) набуває після виклику int 2Fh в регістрі AL значення FFH, а в регістрах СХ і DX символьні коди "DU" і "МР", вона може бути упевненою, що її перша копія вже знаходиться в памяті.Інший, боже простий спосіб полягає в запуску деякої програми, яка за допомогою, наприклад, мультиплексного переривання 2Fh передає резидентній програмі команду вивантаження. Частіше за все як "вивантажуюча" використовують саму резидентну програму, точніше, її другу копію, яка, якщо її запустити в певному режимі, не тільки не намагається залишитися в памяті, але, навпаки, вивантажує з памяті свою першу копію. Найбільш простій - звільнити блоки памяті, займані програмою (власне програмою і її оточенням) за допомогою функції DOS 49h. По-перше, старий вміст вектора, який зберігається десь в полях даних резидентної програми, неможливо витягнути "зовні", з іншої програми, оскільки немає ніяких способів визначити, де саме його заховала резидентна програма в процесі ініціалізації. По-друге, навіть якщо вивантаження здійснює сама резидентна програма, вона може правильно відновити старий вміст вектора лише в тому випадку, якщо цей вектор не був пізніше перехоплений іншою резидентною програмою.В архітектурі процесорів 80х86 передбачені особливі випадки, коли процесор припиняє (перериває) виконання поточної програми і негайно передає управління програмі-обробнику, спеціально написаної для обробки подібної ситуації. Такі особливі ситуації діляться на два типи: переривання і виключення, зале

План
Зміст

Вступ

1. Короткі теоретичні відомості

1.1 Резидентний обробник переривань

1.2 Захист резидентної програми від повторної установки

1.3 Вивантаження резидентної програми з памяті

1.4 Перехоплення переривань

1.5 Обробка переривань

1.6 Переривання від зовнішніх пристроїв

2. Опис методики та алгоритму вирішення завдання

3. Практична реалізація

Висновок

Список використаних джерел

Додаток А Додаток Б

Додаток В

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?