Головна Головна -> Курсові роботи українською -> Інформатика, комп'ютери, програмування -> Розробка резидентної програ-ми

Розробка резидентної програ-ми

Назва:
Розробка резидентної програ-ми
Тип:
Курсова робота
Мова:
Українська
Розмiр:
3,94 KB
Завантажень:
416
Оцінка:
 
поточна оцінка 5.0


Скачати цю роботу безкоштовно
Пролистати роботу: 1  2  3 
 
курсовий проект
з дисципліни: „Системне програмування та операційні
системи”
Тема: „Розробка резидентної програми”
Зміст
1. Опис основних функцій, що використані в програмі……………………
2. Структурна схема програми……………………………………………….
3. Блок-схема програми……………………………………………………..
4. Код програми з поясненнями(ремарками)…............................................
5. Опис роботи………………………………………………………………
6. Висновки
7. Використана література


Висновки
В результаті виконання курсового проектування розроблена резидентна програма, яка, в текстовому режимі роботи монітора, за допомогою маніпулятора „миша” дозволяє виділити і зберегти виділену частину робочого екрану у файл. Назва файлу вказується в командному рядку як параметр при запуску програми. Наведено структурну та блок-схему програми, подано опис її функціонування в середовищі MS-DOS. Текст програми написано на мові Assembler.
5. Опис роботи
Програма складається з резидентної частини (що залишається в оперативній пам’яті після завершення програми ) та загрузчика.
На початку програми вибирається модель пам’яті та тип процесора командами model та .386 відповідно. Виконання програми починається із мітки start. Першою ж командою здійснюється перехід на мітку real_start для того, щоб обійти блок змінних та процедуру обробки переривання.
Далі програма копіює ім’я файлу, що введено як параметр, в змінну file_name. Після цього здійснюється переадресування підпрограми обробки переривання int 08h на нашу резидентну функцію. Це здійснюється за допомогою функцій 25h та 35h переривання int 21h. Після цього програма передає управління DOS, залишаючись резидентною.
Резидентна частина програми реагує на апаратне переривання 08h, яке генерується апаратно 18,2 раза в секунду. Резидентна частина викликає стару
підпрограму переривання після цього здійснює моніторинг лівої кнопки маніпулятора типу «миша», зберігає координати натискання та відпускання лівої клавіші, зберігає виділений текст в змінній buffer та зберігає їх у файлі.
4. Код програми з поясненнями (ремарками)
model tiny ; вибір моделі пам’яті для компіляції сом-файлу
; CS=ES=SS=DS
codeseg ;початок кодового сегменту
.386 ;дозволити використання команд процесора 80386
org 100h ;зміщення в 256 байт для PSP
start: ;мітка першої інтрукції
jmp real_start ;перехід на реальний початок програми
;(обхід блоку даних та резидентної частини)
; оголошення змінних:
;координати точки нажаття лівої клавіші миші
poch_x_m db 0 ;координата по Х
poch_y_m db 0 ;координата по У
;координати точки відпускання лівої клавіші миші
kinc_x_m db 0 ;координата по Х
kinc_y_m db 0 ;координата по У
byte_info db 0 ;байт характеристики
old_int8_ip dw 0 ;зміщення старого вектора int 08h
old_int8_cs dw 0 ;сегмент старого вектора int 08h
file_name db 24 dup(0) ;ім’я файлу
buffer db 2000 dup(0) ;буфер
des dw 0 ;дескриптор файлу
kilk dw 0 ;кількіть байтів в даний момент в буфері
; ================= нова програма обробки переривання int 08h
interrupt:
pushf ;зберігаємо в стеці поточний стан прапорців для імітації
;виклику переривання
call dword ptr cs:[old_int8_ip] ;виклик старої програми обробки переривання
pusha ;зберігаєм регістри оперативного призначення
mov al, cs:byte_info ;заносимо в al байт характеристик
test al,04h ;перевіряєм поле F.z
jnz endi ;якщо встановлений в 1 – перехід в кінець програми
mov ax,0003h ;функція одержання статусу миші
int 33h ;виклик переривання
test bl,01h ;ліва клавіша натиснута
jz no_key_press ;якщо ні, перехід на мітку no_key_press
mov al, cs:byte_info ; заносимо в al байт характеристик
test al,01h ; перевіряєм поле L.n
jnz end_key ; якщо встановлений в 1 – перехід на міту end_key
shr cx,3 ; ділимо отримане значення Х на 8, бо в текстовому режимі роботи
; монітора один символ представлений 8-ма точками по Х та по У
mov cs:poch_x_m,cl ; запамятовуєм значення по Х в змінній poch_x_m
shr dx,3 ; ділимо отримане значення У на 8
mov cs:poch_y_m,dl ;запамятовуєм значення по У в змінній poch_y_m
mov cs:byte_info,01h ; заносимо в байт характеристик в поле L.

Завантажити цю роботу безкоштовно
Пролистати роботу: 1  2  3 



Курсова робота на тему: Розробка резидентної програ-ми

BR.com.ua © 1999-2017 | Реклама на сайті | Умови використання | Зворотній зв'язок