Удаление файлов с возможностью восстановление их


Тип работы:  Материал
Бесплатно:  Антиплагиат
Объем: 19 страниц
В избранное:   
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН

Казахский Национальный Технический Университет

имени Каныша Сатпаева

Кафедра вычислительной техники

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту
по дисциплине "Системное программирование"
Тема: Удаление файлов с возможностью восстановление их

Руководитель: Дмитриева М.В.

“__”____________2002г.

Нормоконтролер

____________________

“__”____________2002г.

Студент Оразханов Р.А.

Специальность 3704

Группа ЗБИ-00-2

Алматы 2003

ЗАДАНИЕ

Разработать программу, удаление файлов с возможностью восстановление
их.

Руководитель проекта Дмитриева М.В.

Задание принял к исполнению студент Оразханов Р.А.

Дата "__"_______2002г.

Дата представления готового проекта к защите "___"_______

Содержание

Введение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4
1. Описание структуры программы ... ... ... ... ... ... ... ... ... ...5
1.1 Вывод интерфейса, поиск файлов в текущем директории и
вывод их на экран ... ... ... ... ... ... ... ... ... ... ... ... ... ... .5
1. Управление курсором ... ... ... ... ... ... ... ... ... ... ... ... 7
1. Описание блок – схемы алгоритма ... ... ... ... ... ... ... ... ... 8
2. Расчет времени работы программы ... ... ... ... ... ... ... ... ..10
3. Руководство пользователя ... ... ... ... ... ... ... ... ... ... ... ..12
4. Руководство программиста ... ... ... ... ... ... ... ... ... ... ... .12

Заключение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..1 4

Список литературы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . .15
Приложение А - листинг программы ... ... ... ... ... ... ... ... ... ...16
Приложение Б - блок-схема алгоритма ... ... ... ... ... ... ... ... ... 25

Введение

Язык ассемблера фактически представляет собой машинный язык (язык
процессора), где коды команд заменены именами. Человек лучше ориентируется
в именах, чем в числах, поэтому язык ассемблера проще для понимания, чем
машинный язык. Кроме того, сами имена могут быть говорящими, например MOV
(от MOVE – перемещать), ADD (прибавлять) и т.п., что дает дополнительные
удобства. Другим упрощением языка ассемблера по отношению к машинному
является использование меток вместо конкретных адресов. Это значительно
упрощает работу, т.к. не нужно думать, по какому адресу расположена та или
иная команда или данные. Вот два основных момента, которые определяют язык
ассемблера и отличают его от машинного языка.
Большинство трансляторов с языка ассемблера работают в два прохода. При
первом проходе транслятор составляет таблицу всех имен, встречающихся в
программе, присваивая им соответствующее числовое значение (адрес). Во
втором проходе происходит кодирование программы – замена команд на их
числовые коды с учетом значений из таблицы. В результате получается
объектный модуль, в котором наряду с кодами команд содержится информация о
глобальных переменных, которая далее используется редактором связей.
Прерывание по своему смыслу есть временное прекращение какого-то
процесса. Команды INT и CALL реализуют программные прерывания. Они
выполняются, когда приходит время выполнить соответствующую команду. После
их выполнения программа продолжает работать с команды, стоящей за командой
вызова прерывания, которые происходят, когда наступает некоторое событие,
внешнее по отношению к программе. Это может быть сигнал по прошествию
определенного промежутка времени, нажатие клавиши, переход принтера в
состояние готовности, наступление некоторого события в микропроцессоре
(деление на нуль, переполнение и т.п.) и т.д. Соответственно, аппаратные
прерывания, происходящие от внешних устройств, будем называть внешними, а
аппаратные прерывания, происходящие от события в микропроцессоре –
внутренними. Есть еще немаскируемое прерывания – NMI. Это прерывание
невозможно запретить командой CLI.

1. Описание структуры программы.

Данная программа выполняет удаление файлов с возможностью
восстановление их.
В данной программе использовались следующие процедуры:
1 Вывод интерфейса на экран
2 Поиск файлов и директориев и вывод их экран
3 Управление курсором
4 Вывод окна на экран для удаления файла
5 Вывод окна на экран для восстановления файла
6 Очистка экрана
7 Уборка курсора с экрана
8 Процедура вывода курсора на экран

1.2 Вывод интерфейса, поиск файлов в текущем директории и
вывод их на экран.

Сначала выводится синее окно (синий фон, белые буквы) с тремя
колонками. Синий фон выводится с помощью 06h функции int 10h прерывания,
цвет фона задается в bl. Затем осуществляется поиск файлов в текущем
директории с помощью функции 4eh (найти первый совпадающий файл) и 4fh
(найти следующий совпадающий файл) int 21h-го прерывания. Для поиска можно
применять обобщающие символы (*, ?). А если вы не указали диск и путь, то
файлы ищутся в текущем директории. DOS находит имя первого файла в
оглавлении, которое совпадает с заданным именем и атрибутом, и помещает
найденное имя и другую информацию в DTA, и начало имени в формате ASCIIZ
строки находятся в DTA по адресу es:[80h+30].
Вывод файлов на экран осуществляется с помощью функции 02h int 21h-го
прерывания. В dl заносится в цикле один за другим имя файла из DTA, пока не
встретится 0.

mov ah,4eh
lea dx,Path ;Path db ‘*.*’,0
mov cx,10h ;искать файлы и директории
int 21h
next: mov ah,4fh ;продолжать поиск
lea dx,Path
mov cx,10h
int 21h
cmp ax,18 ;если конец директория то выход
je ret0
test byte ptr es:[80h+21],10h ;это файл
jnz Dir
cmp vost_f,1
je d_Y
call Output ;процедура выводящая файл или директории на
экран
inc Y
cmp Y,20
je nx_kl
jmp next

1.2 Управление курсором

Вывод курсора и гашение его осуществляется с помощью процедуры
ReadWrite. Эта процедура работает следующим образом, мы задаем координаты
str_ - строка stb_ - столбец, в bl заносится атрибут курсора (atrcur). В
теле процедуры используется последовательное считывание символов (8h int
10h) один за другим и затем записывание их только с другим атрибутом (9h
int 10h). В этой же процедуре сохраняется в форме ASCIIZ строки имя
удаляемого или восстанавливаемого файла. Когда курсор выведен, начинает
работу процедура ReadKey. Она ожидает нажатие клавиши (00h int 16h) и ASCII
(Скан) код нажатой клавише заносится в al (ah) соответственно. Он
сравнивается с помощью команды CMP и если ASCII (Скан) коды равны
передается управление короткой метки. Процедура ReadKey как вы уже
догадались, управляет курсором и если вы нажали клавишу F8 или F7 удаляет
или восстанавливает файл соответственно. А если вы нажали клавишу ESC то
осуществляется выход из программы.

READWRITE PROC
MOV CX,LenCur
MOV DH,str_ ; в строку str_
MOV DL,stb_ ; в столбец stb_
MOV AH,2 ; установить курсор
INT 10h
RW: PUSH CX
MOV CX,1
MOV AH,8 ; читать символ
INT 10h
MOV AH,9 ; писать символ
INT 10h
INC DL ; переходим к следующей позиции (stb_)
MOV AH,2 ; передвинуть курсор
INT 10h
POP CX
LOOP RW
READWRITE ENDP
Включение курсора:
MOV BL,atrcur
CALL READWRITE
Выключение курсора:
MOV BL,atrfon
CALL READWRITE

А теперь подробней рассмотрим что происходит при нажатии клавиши F8.
При нажатии клавиши F8 вызывается процедура Delwin которая выводит окно на
экран и выбор, на удаление или отмены удаление файла. Если вы нажали кнопку
Удалить то вызывается процедура Remove, которая перемещает файл в каталог
Korzina. А Отмена как вы уже догадались, отменяет удаление. Если же вы
нажали клавишу F7 вызывается процедура UnereaseWin которая выводит окно на
экран с кнопками Удалить, Восстановить, Отмена. Если вы нажали кнопку
Удалить то файл удаляется безвозвратно, если же была нажата кнопка
Восстановить вызывается процедура Unerease которая восстанавливает файл в
тот же директории с которого была перемещена. Кнопка же Отмена отменяет
восстановление.

2. Описание блок-схемы алгоритма.

Блок-схема алгоритма приведенная в приложении Б полностью описывает
логику программы.
• 1. Начало
• 2. Соответствует процедуре Interface которая выводит интерфейс на
экран (синий фон белая рамка)
• 3. Включает в себя две процедуры SearchFile и Output которые
производят поиск файлов и выводит их на экран соответственно
• 4. Ожидает нажатие клавиши (процедура ReadKey) и управляет курсором
• 5. Если, нажата клавиша F8, то передается управление блоку 6, если
нет то управление передается блоку 9 (проверка нажатие клавиши F7)
• 6. Если нажата кнопка Удаление то управление передается блоку 8
(перемещение файла в директорий Korzina), если нет, то управление
передается блоку 7 (проверка нажатие кнопки Отмена)
• 7. Если нажата кнопка Отмена то перемещение отменяется и
управление передается к блоку 2 (вывод интерфейса на экран), а если
нет, то управление передается блоку 6 (проверка нажатие кнопки
Удалить)
• 8. Перемещение файла в директорию Korzina и передача управление
блоку 2 (вывод интерфейса на экран)
• 9. Если нажата клавиша F7, то управление передается блоку 10
(удаление без возможности восстановить их), а если нет, то
управление передается блоку 15 (проверка нажатий клавиши ESC)
• 10. Если нажата кнопка Удалить то управление передается блоку 13
(удаление файла безвозвратно), а если нет, то управление передается
блоку 11 (проверка нажатий кнопки Восстановить)
• 11. Если нажата кнопка Восстановить то управление передается блоку
14 (восстановление файла), а если нет, то управление передается
блоку 12 (проверка нажатий кнопки Отмена)
• 12. Если нажата кнопка Отмена то управление передается блоку 2
(вывод интерфейса на экран), если нет, то управление передается
блоку 10 (проверка нажатий кнопки Удаление)
• 13. Удаление файла безвозвратно
• 14. Восстановление файла (процедура Unerease)
• 15. Если нажата клавиша ESC, то передается управление блоку 16
(конец)
• 16. Конец

Расчет времени работы программы

Скорости выполнения команд для процессоров 8086 – P5 даны в тактах (когда
говорят что тактовая частота процессора 100 MHz, это означает, что за
секунду проходит 100 миллионов тактов).
Операнды обозначаются следующим образом:
□ im – непосредственный операнд;
□ i8, i16 – непосредственный операнд указанного размера;
□ r – любой регистр;
□ r8 – AH, AL, BH, BL, DH, DL, CH, CL;
□ r16 – AX, BX, CX, DX, BP, SP, SI, DI;
□ sr – сегментный регистр;
□ m – операнд в памете.
Расчитаем времени работы программы на компьютерах сроцессором Intel
80286, для этого подсчитаем количество команд в программе с помощью таблицы
в которой описано время работы каждой команды.
В программе были использованы следующие команды:
Количество команды время
47 mov r8, i8 2
24 mov r16, i16 2
15 mov r, m 5
21 mov m, im 3
8 mov m, r 3
1 mov r, sr 2
4 mov sr, r 2
1 mov sr, m 5
20 INT i8 23
21 ret 11
3 sub r, im 3
1 sub m, im 7
5 push r 3
5 push m 5
1 push cs 3
5 cmp r, m 6
11 cmp r, im 3
3 cmp m, im 6
3 cmp m, r 7
29 jcc i8 (не вып.) 3
29 jcc i8 (вып.) 7
25 INC r 2
2 INC m 7
7 pop r 5
6 pop m 5
1 pop ds 5
14 loop i8 (не вып.) 4
14 loop i8 (вып.) 8
6 jmp near i8 7
4 jmp far im 11
1 shr r, cl 5
7 xor r, r 2
6 add r, im 3
2 add m, im 7
1 add m, r 7
3 lea r, m 3
28 call im (CG) 41
1 sub m, im 7
2 dec r 2
1 shl r, 1 2
1 test m, im 6

Складываем время всех комманд используемых в программе:

T = 47*2+24*2+15*5+21*3+8*3+1*2+4*2+1*5 +20*23+21*11+3*3+
+1*7+5*3+5*5+1*3+5*6+11*3+3*6+3*7+2 9*3+29*7+25*2+
+2*7+7*5+6*5+1*5+14*4+14*8+6*7+4*11 +1*5+7*2+6*3+2*
*7+1*7+3*3+28*41+1*7+2*2+1*2+1*6=33 84

Получили время T=3384

4. Руководство пользователя

Для работы с программой необходимо иметь файл: kurs.exe Для запуска
программы необходимо найти на диске файл с именем kurs.ехе и запустить файл
на выполнение. При загрузке программы на экране появляется имена файлов
текущего директория. Управление курсором при выборе файла осуществляется
при помощи следующих клавиш: стрелка вниз, стрелка вверх, F8
(удаление), F7 (восстановление), Esc (выход). При нажатии клавиши F8
- экран окрашивается в синий цвет, выводятся файлы и директории текущего
директория, в нижней части экрана появляются название клавиш:
F8 - Удалить
F7 - Восстановить
ESC - Выход
При нажатии клавиши Esc происходит выход из программы.

5. Руководство программиста

Для поиска файлов были использованы функции 4eh и 4fh int 21h, которые
возвращает найденные файлы в DTA по адресу es:[80h+30], для анализа нажатия
определенной клавиши была использована функция 0 int 16h. После опроса
клавиатуры содержимое регистра AL сравнивается с ASCII-кодами нажатых
клавиш, либо содержимое регистра АН сравнивается со скэн-кодами нажатых
клавиш.

Данная программы, не привязана к ресурсам системы и способна работать
на любом компьютере, начиная с самых слабых моделей и заканчивая самыми
современными персональными компьютерами.
1. Компьютер, оснащенный процессором любым процессором
2. ОЗУ-4 МБ и выше
3. Монитор-любой
4. Объем свободного пространства на жестком диске - 400 Кб
5. ОС - DOS любой версии

Заключение

Применяя теоретические знания, полученные в курсе лекций по системному
программированию, была разработана программа удаление файлов с возможностью
восстановление их, вывод их имён на дисплей, управление курсором. Которая
проста в использовании, не занимает много место в памяти, не требовательна
к системным ресурсам.

СПИСОК ЛИТЕРАТУРЫ

1. Скэнлон Л. ПЭВМ IBM PC и ХТ. Программирование на языке
Ассемблера.-М.: Радио и Связь, 1989.
2. Hортон П. Персональный компьютер фирмы IBM и операционная система
MS-DOS.-М.: Радио и Связь, 1991.
3. Куцый А.П. Системное программирование. Методические указания к
проведению лабораторных работ по курсу "Системное программирование", часть
1. - Алматы: КазНТУ, 1998.
4. Абель П. Язык Ассемблера для IBM PC и программирование. М.:
Высшая школа,1992.

Приложение А

.model small
.386
.code
Path db '*.*',0
fr_del db '“¤ Ёвм д ©:$'
Delete db ' “¤ Ёвм $'
Cancel db ' Ћв¬Ґ­  $'
X db 1
Y db 2
Y1 db ?
stY db 5
stY1 db 2
... продолжение

Вы можете абсолютно на бесплатной основе полностью просмотреть эту работу через наше приложение.
Похожие работы
Работа с файлами в программировании: чтение, запись и управление файлами
Работа с файлами: операции чтения, записи и управления
Мастерство работы с документами и приложениями в среде Windows: управление окнами, подменю и командами для эффективного взаимодействия с системой
Разработка системы электронного документооборота для учреждений: требования и функциональная характеристика
Основные Требования к Антивирусным Программам и Их Функциональные Возможности
Общие сведения о файлах и работе с ними в операционной системе
Обработка и Архивирование Файлов: Основные Способы и Программы
Работа с приложениями Windows: Календарь, Часы и Карточки
Установка и настройка Windows 2000: автоматическое подключение, работа с графическими файлами, звуком и демонстрацией слайдов
Функциональные возможности лазерного проигрывателя и других мультимедийных программ
Дисциплины