Курсовой проект по системному программированию: программа удаления файлов с возможностью восстановления (ассемблер, MS-DOS)


Тип работы:  Материал
Бесплатно:  Антиплагиат
Объем: 19 страниц
В избранное:   

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН

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

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

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

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

к курсовому проекту

по дисциплине "Системное программирование"

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

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

“__”2002г.

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

“__”2002г.

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

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

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

Алматы 2003

ЗАДАНИЕ

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

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

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

Дата "__"2002г.

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

Содержание

Введение . . . 4

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

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

вывод их на экран. …. . 5

  1. Управление курсором. …. . 7
  1. Описание блок - схемы алгоритма. . . 8
  2. Расчет времени работы программы. 10
  3. Руководство пользователя. . . . 12
  4. Руководство программиста. . . 12

Заключение. . . 14

Список литературы…. . . . ………. ………. 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+29*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=3384

Получили время 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

Lencur dw 12

Lencur1 dw 0

LencurO dw 0

str_ db 2

stb_ db 1

str1 db 0

stb1 db 0

strO db 0

stbO db 0

atrcur db 0001b

atrfon db 000b

ten db b

atrbut db 01b

atrwin db 0b

file_name db 13 dup(0)

vfile_name db 13 dup(0)

vost_f db 0

buf db 2 dup(0)

buf_fname db 2 dup(?)

old_dir db 100 dup(?)

Korz db 'Korzina', 0

handle dw ?

size_ dw ?

Er1 db 'Cant open file$'

Er2 db 'Cant read file$'

Er3 db 'Cant delete file$'

Er4 db 'Cant create file$'

non_show db 0

_Esc db 0

_stY db ?

;

; PROCEDURES

;

;

Interface proc

;

mov ax, 0600h

mov bh, b

mov cx, 0

mov dx, 184fh

int 10h

mov ah, 06h

mov ch, 0

mov cl, 0

mov dh, 22

mov dl, 39

mov bh, 000b

int 10h

mov ah, 2

mov bh, 0

xor dx, dx

int 10h

mov ah, 09h

lea dx, panel

int 21h

ret

Interface endp

;

Delwin proc

;

mov al, str_

mov ah, stb_

push ax

mov bx, Lencur

push bx

mov al, stY

mov _stY, al

mov str_, 6

mov stb_, 5

mov Lencur, 34

mov bl, ten

loop_: call ReadWrite

inc str_

cmp str_, 14

je win

jmp loop_

win: mov ah, 06h

mov ch, 5

mov cl, 3

mov dh, 12

mov dl, 36

mov bh, 0b

int 10h

xor si, si

rm: mov ah, 02h

mov bh, 0

mov dh, stY

mov dl, 3

int 10h

ram: cmp stY, 13

je outf

mov ah, 02h

mov dl, del_form[si]

int 21h

inc si

cmp del_form[si], '$'

je ne_str

jmp ram

ne_str: inc stY

inc si

jmp rm

outf: mov ah, 02h

mov bh, 0

mov dh, 6

mov dl, 14

int 10h

push dx

mov ah, 09h

lea dx, fr_del

int 21h

pop dx

inc dh

mov ah, 02h

int 10h

xor si, si

ne_f: mov ah, 02h

mov dl, file_name[si]

int 21h

inc si

cmp si, 13

je button

jmp ne_f

button: mov ah, 02h

mov bh, 0

mov dh, 10

mov dl, 10

int 10h

push dx

mov ah, 09h

lea dx, Delete

int 21h

pop dx

mov dl, 22

mov ah, 02h

int 10h

mov ah, 09h

lea dx, Cancel

int 21h

mov Lencur, 9

mov bl, atrbut

mov str_, 10

mov stb_, 10

call ReadWrite

call Unviz

RedBut: mov ah, 00h

int 16h

cmp ah, 'K'

je Left

cmp ah, 'M'

je Right

cmp al, 13

je Enter_

cmp al, 27

je ret3

jmp RedBut

Left: cmp stb_, 10

je RedBut

mov str_, 10

mov stb_, 22

mov Lencur, 8

mov bl, atrwin

call ReadWrite

mov Lencur, 9

mov bl, atrbut

mov str_, 10

mov stb_, 10

call ReadWrite

call Unviz

jmp RedBut

Right: cmp stb_, 22

je RedBut

mov Lencur, 9

mov str_, 10

mov stb_, 10

mov bl, atrwin

call ReadWrite

mov Lencur, 8

mov bl, atrbut

mov str_, 10

mov stb_, 22

call ReadWrite

call Unviz

jmp RedBut

Enter_: cmp stb_, 22

je ret3

cmp stb_, 10

je Remov

ret3: mov al, _stY

mov stY, al

pop bx

mov Lencur, bx

pop ax

mov str_, al

mov stb_, ah

ret

Remov: call Remove

jmp ret3

Delwin endp

;

Remove proc

;

mov ah, 19h

int 21h

add al, 'A'

mov old_dir[0], al

mov old_dir[1], ':'

mov old_dir[2], '\'

mov ah, 47h

lea si, old_dir[3]

mov dl, 0

int 21h

mov ah, 3dh ; open file

lea dx, file_name

mov al, 0

int 21h

jc err1

mov handle, ax

mov ah, 42h

mov bx, handle

xor cx, cx

xor dx, dx

mov al, 2

int 21h

mov size_, ax

mov ah, 42h

mov bx, handle

xor cx, cx

xor dx, dx

mov al, 0

int 21h

mov ah, 3fh ; read file

mov bx, handle

lea dx, buf

mov cx, size_

jc err2

int 21h

mov ah, 3eh ; close file

mov bx, handle

int 21h

mov ah, 41h ; delete file

lea dx, file_name

int 21h

jc err3

mov ah, 39h ; create dir

lea dx, Korz

int 21h

mov ah, 3bh

lea dx, Korz

int 21h

mov ah, 3ch

lea dx, file_name

mov cx, 0

int 21h

jc err4

mov handle, ax

mov ah, 3dh ; open file

lea dx, file_name

mov al, 2

int 21h

mov ah, 40h

mov bx, handle

lea dx, buf

mov cx, size_

int 21h

mov ah, 3eh ; close file

mov bx, handle

int 21h

mov ah, 3bh

lea dx, old_dir

int 21h

ret5: ret

err1: mov ah, 02h

mov bh, 0

mov dh, 2

mov dl, 45

int 10h

mov ah, 09h

lea dx, Er1

int 21h

jmp ret5

... продолжение

Вы можете абсолютно на бесплатной основе полностью просмотреть эту работу через наше приложение.
Похожие работы
Операционная система MS-DOS: архитектура, организация файлов и базовые команды
Командный файл MS-DOS: практическое руководство по работе с каталогами, файлами и дисками в MS-DOS и Norton Commander
Разработка программы Меню на языке ассемблера для MS-DOS: просмотр файлов, навигация по каталогам и управление видеорежимом
Организация файловых систем: архитектура NTFS, атрибуты файлов и управление в MS-DOS/Windows
Учебная программа по операционным системам и системам программирования: MS DOS, NC, Total Commander
Операционные системы и файловая система: структура MS-DOS, FAT, организация накопителей, каталогов и имён файлов
MS DOS и Norton Commander: учебное руководство по основам работы в DOS
Методика разработки виртуальных лабораторных работ по системному программированию для элективного курса информатики
Микропроцессоры и ассемблер: история, типы и программирование DOS/BIOS-прерываний
Операционная система MS-DOS: основные понятия, структура и команды для работы с файлами
Дисциплины



Реферат Курсовая работа Дипломная работа Материал Диссертация Практика - - - 1‑10 стр. 11‑20 стр. 21‑30 стр. 31‑60 стр. 61+ стр. Основное Кол‑во стр. Доп. Поиск Ничего не найдено :( Недавно просмотренные работы Просмотренные работы не найдены Заказ Антиплагиат Просмотренные работы ru ru/