КУРСОВА РОБОТА
з дисципліни СИСТЕМНЕ ПРОГРАМУВАННЯ ТА ОПЕРАЦІЙНІ СИСТЕМИ
Тема – Розробка резидентної програми, яка блокує і, по паролю, розблоковує операції з файлами в заданій папці (директорії).
Робоча папка (директорія) та пароль вказуються в командному
рядку як параметри при запуску програми.
АНОТАЦІЯ
В даній роботі розроблена програма, яка блокує і, по паролю, розблоковує операції з файлами в заданій папці (директорії). Робоча папка (директорія) та пароль вказуються в командному рядку як параметри при запуску програми При введенні паролю користувачем система порівнює значення паролю з паролем який був введений при запуску програми в командному рядку.
SUMMARY
In this work the developed program which blocks and, on a password, deblocks to operation with files in the set folder (directories). A working folder (directory) and password is specified in a command line as parameters at the start of the program At by an user the system compares the value to the password with in a command line.
ЗМІСТ
Стор
1. ОПИС ОСНОВНИХ КОМАНД, ЩО ВИКОРИСТАНІ В
ПРОГРАМІ.............................................................................................. 7
2. БЛОК-СХЕМА ПРОГРАМИ............................................................ 9
3. КОД ПРОГРАМИ З ПОЯСНЕННЯМИ......................................... 11
4. ОПИС РОБОТИ ПРОГРАМИ.......................................................... 14
ВИСНОВКИ............................................................................................. 15
ПЕРЕЛІК ВИКОРИСТАНИХ ЛІТЕРАТУРНИХ ДЖЕРЕЛ................ 16
КР.КС-58.00.000 КС
Зм. | Лист | № докум | Підпис | Дата
Розроб. | Комп’ютерні мережі та системи | Літ. | Арк. | Аркушів
Перевір. | 6 | 16
Реценз.
Н.Контр.
Затверд.
1. ОПИС ОСНОВНИХ КОМАНД , ЩО ВИКОРИСТАНІ В
ПРОГРАМІ
В резидентній програмі яка блокує і, по паролю розблоковує операції з файлами в заданій папці (директорії), використовуються такі команди.
jmp - команда безумовного переходу, а також регістр або змінна, що містить адресу. В даній програмі ця функція виконує перехід до загрузчика.
jl - команда, яка здійснює перехід, аналогічний попередній, з умовою якщо перший операнд при попередньому порівнянні виявився меншим від другого.
jne - ця команда здійснює перехід, за умови що операнди виявились не рівними між собою.
pusha - команда розміщує в стеку регістри в порядку: AX,CX,DX,BX,SP,BP,SI,DI.
popa - команда виконує дії повністю протилежні pusha, але поміщене в стек значення SP або ESP ігнорується. popa завантажує зі стеку DI,SI,BP, збільшує SP на 2, і завантажує BX,DX,CX,AX.
mov - базова команда пересилання даних. Здійснює копіювання даних з джерела (вказується другим) в приймач (вказується першим, одразу після назви команди).
cmp - команда зрівнює операнди і встановлює флажки. Процес здійснюється шляхом вирахування джерела (число, регістр або змінна) з приймача (регістр або змінна, приймач та джерело не
Арк.
КР.КС-58.00.000 КС 7
Зм. | Арк. | № докум | Підпис | Дата
можуть бути змінними одночасно), причому результат вирахування нікуди не записується.
Єдиним наслідком роботи цієї команди є зміна флажків CF, OF, SF, ZF, AF і PF. В даній програмі команда використовується в поєднанні з командами переходу jmp, jl та jne.
iret - вихід (повернення) з переривання. Повертає зі стеку значення IP, CS і FLAGS які були до переривання.
КР.КС-58.00.000 КС | Арк.
8
Зм. | Арк. | № докум | Підпис | Дата
2. БЛОК-СХЕМА ПРОГРАМИ
Блок – схема загрузочної чатини програми.
Ні
Так
Встановлення попереднього
адресу вектора переривань
КР.КС-58.00.000 КС
.00.00.000 ПЗ | Арк.
9
Зм. | Арк. | № докум | Підпис | Дата
Блок – схема резидентної чатини програми.
Так
Ні
Ні
Так
КР.КС-58.00.000 КС | Арк.
10
Зм. | Арк. | № докум | Підпис | Дата
3. КОД ПРОГРАМИ З ПОЯСНЕННЯМИ
Програма на мові Asembler.
.model tiny;вибір моделі пам’яті для компіляції com-файлу
.286
code segment
assume cs:code,ds:code
org 80h
len db ?
line db ?
org 100h
start:
......................резидентна частина................
jmp install ; перехід на реальний початок програми
fun equ 3ch
interrupt equ 21h
passw db 'Vvedit parol: $' ;буфер для виводу даних на екран
mes db 10
mesl db ?
rmes db 10 dup(?)
old_ip dw ?
old_cs dw ?
mess1 db 'Dostup zaboroneno!',0ah,0dh,'$'
mess2 db 'Dostup dozvoleno!',0ah,0dh,'$'
nop
………………………………………………………………………………………………
obrobka:
cmp ah,fun
jne mit1
pusha ; збереження регістрів
push cs
pop ds ; відновлюємо значення регістра DS
mov ah,9
mov dx,offset passw;
pushf ; зберігаємо в стеці поточний стан прапорців
call dword ptr cs:[old_ip]
;int 21h ; виклик переривання виконання функції
КР.КС-58.00.000 КС | Арк.
11
Зм. | Лист | № докум | Підпис | Дата
mov ah,0ah
mov dx,offset mes
;int 21h ; виклик переривання виконання функції
pushf ; зберігаємо в стеці поточний стан прапорців
call dword ptr cs:[old_ip]
xor ch,ch
mov cl,mesl
xor di,di
porivn:
mov al,rmes[di]
inc di
cmp al,line[di]
jne failed
loop porivn
mov ah,9
mov dx,offset mess2
pushf ; зберігаємо в стеці поточний стан прапорців
call dword ptr cs:[old_ip] ;виклик старої програми обробки
popa ; зберегти регістри оперативного призначення
mit1:
jmp dword ptr cs:[old_ip]
failed:
mov ah,9
mov dx,offset mess1
pushf ; зберігаємо в стеці поточний стан прапорців
call dword ptr cs:[old_ip];виклик старої програми обробки
popa ; зберегти регістри оперативного призначення
iret ;передаємо управління перерваній програмі
.....................загрузочна частина....................
install:
cmp len,0
jne in1
mov dx,offset err1
mov ah,9
int 21h виклик переривання виконання функції
mov ax,4c00h
int 21h ;виклик переривання виконання функції
КР.КС-58.00.000 КС | Арк..
12
Зм. | Лист | № докум | Підпис | Дата
in1:
mov ah,35h
mov al,interrupt ;отримати адресу попереднього вектора переривання
int 21h ;виклик переривання виконання функції
mov [old_ip],bx ;зберегти молодше слово адреси в old_ip
mov [old_cs],es ;зберегти старше слово адреси в old_cs
mov dx,offset obrobka
mov ah,25h ; встановити нову адресу
mov al,interrupt
int 21h ;виклик переривання виконання функції
mov dx,offset install ;завершити роботу і залишити резидентною частину програми по мітку install
int 27h ;передаємо управління DOS
err1 db 'NEMA PARAMETRIV',0AH,0DH,'$'
code ends
end start ;кінець сегменту даних та назва точки входу з програми.
cmp - команда зрівнює операнди і встановлює флажки. Процес здійснюється шляхом вирахування джерела (число, регістр або