Курсовая работа: Розробити програму-аналог програми Doc Undelete
5. Якщо кінець файлу не був знайдений, переглянете всі наступні елементи таблиці FAT (послідовно) доти, поки ви не зустрінете елемент, що містить значення 000. Переглянете вміст кластера, що має такий само номер, що й елемент таблиці FAT. Якщо уміст виявиться частиною стертого файлу, запам'ятаєте номер цього кластера і продовжите перегляд інших елементів таблиці FAT і еквівалентних їм кластерів доти, поки ви не рахуєте, що досягли кінця файлу. Обсяг перегляду залежить від декількох моментів, описаних у наступному кроці.
6. Визначите по розмірі файлу, узятому з елемента каталогу, скільки кластерів повинний займати файл. Крім цього, помнете, що, якщо ви відновлюєте текстовий файл у коді ASCII, наявність у кластері символу "Control-Z" (шіснадцяткове значення A1) указує на кінець файлу.
Отже, повертайтеся назад на крок 5 доти, поки ви не досягніть максимального числа кластерів, зайнятих файлом. Відзначайте кожен номер кластера, що містить дані, стосовні, на вашу думку, до стертого файлу. Якщо в якомусь кластері ви зустріли символ "Control-Z", але ще не визначили, скільки кластерів повинне складати шуканий файл, будьте обережні: кластер, у якому з'явився символ "Control-Z", може означати кінець іншого стертого файлу. Переглянете інші наступні елементи каталогу по стертих файлах і відзначте для себе їхні початкові кластери, а також розміри їхніх файлів. Можливо, що два чи більш стертих файли мають переплетені шляхи доступу до послідовностей своїх кластерів.
7. Після того, як ви обґрунтовано вирішите, які кластери, зайняті потрібним файлом, як вони зчеплені, а також будете упевнені в тім, що знайшли кінець файлу, перешикуйте таблицю FAT. Починаючи з першого кластера, перейдіть до еквівалентного елемента таблиці FAT і збережете номер наступного кластера зайнятого файлом. Потім перейдіть на цьому наступний елемент таблиці FAT і збережете номер наступного кластера. Продовжуйте виконувати цю операцію доти, поки не досягнете останнього кластера. Тоді в елемент таблиці FAT ви помістите будь-яке число від (F) FF8 до (F) FFF, щоб відзначити кінець файлу. Далі перейдіть до елемента каталогу, що відноситься до нашого файлу і зміните перший символ із шіснадцяткового значення E5 у те значення в коді ASCII у шіснадцятковому виді), що ви хотіли б бачити як перший символ імені файлу.
8. Отже, усе зроблено. Після повернення на підказку операційної системи MS-DOS, уведіть команду DIR, щоб перевірити, що файл з'явився в каталозі диска. Якщо відновлюваний файл є текстовим файлом, відкрийте файл текстовим чи редактором текстовим процесором, щоб перевірити його вміст. Якщо це файл якогось іншого типу (наприклад, файл, що має розширення імені. ЧИ СОМ. EXE), завантажите файл, як програму для перевірки, чи працює вона правильно.
5. Реалізація програми
Програма написана на мові ASM-86 з використанням команд процесора 286/386. Вона складається з головної програми, яка перевіряє параметр - файл, який потрібно відновити, знаходить цей файл, якщо він є, серед вилучених, та відновлює його.
Програма компілюється Turbo Assembler, зв’язується за допомогою TLINK.
6. Системні вимоги
IBM сумісний комп’ютер із мікропроцесором Intel 80386 або старшим.
Для перегляду результатів - Turbo Debugger або інший відлагоджувач.
7. Інструкція для користувача
Для запуску програми, яка дозволяє відновлювати файли, треба в командному рядку набрати UNDEL.com потім, через проміжок набрати ім'я файлу, який треба відновити на диску a, та натиснути Enter. Програма перевірить, чи є таке ім'я на диску серед вилучених файлів, і якщо є, то відновить його.
8. Висновки
Отже, є розробленою програма, яка виконує відновлювання вилучених файлів. Також був розглянутий алгоритм відновлювання файлів, які були вилучені. По перерахованим вище кроках може показатися, що процедура відновлення файлів є досить прямолінійної. У залежності від наявних у вашому розпорядженні програмних інструментів, у дійсності однак перегляд даних на диску й запис інформації на диск може бути складним заняттям. Відзначимо тут, що кроки 6 і 7 містять застереження про можливість того, що трохи раніше стертих файлів можуть переплестися через складну послідовність розташування їхніх кластерів. Відновлення переплутаних даних зазначеним вище способом може виявитися дуже нудотним і в той же час головоломним заняттям. Але при наявності терпіння (можливо усього лише невеликого!), і, змусити себе бути методичним, ви неодмінно зможете розплутати файли.
9. Використана література
1) “Програмування на мові Асемблера ЕС ЕВМ" З.С. Брич. В.I. Воющ Москва 1989 р. ст.166
2) “Програмування на сучасних мовах програмування. ” Москва 1990р. ст. 206
3) “Основи мови” Асемблер” В.I. Криволап. Москва 1997р. ст.309
4) “Ассемблер для початкiвцiв” М.П. Шукiн. Київ 1980р. ст.155
5) “Турбо Асемблер” Л.В. Захаров. Харків 1995 р ст.178
6) “Макро Асемблер” К.С. Кропiйко О.Д. Богатирова. Київ - “Наука” 1991р.
7) Електронний довідник BOOK.
Додаток
Лістинг програми
FCB_LOC EQU 5CH; Положение FCB для удаленного файла в PSP
SWITCH_LOC EQU 81H; Положение командного рядка
CR EQU 13; ASCII возврат каретки
LF EQU 10; ASCII перевод строки
CODE_SEG SEGMENT
ASSUME CS: CODE_SEG,DS: CODE_SEG,ES: CODE_SEG
ORG 100H
ENTRY: JMP FIRST; пропуск данных
I_O_FLAG DW?; Выбор чтения или записи кластеров
START_CLUSTER DW?; Первый кластер удаленного файла
FILE_SIZE DW?; Размер файла в кластерах (1 кластер =1 сектору)