Курсовая работа: Розробити програму-аналог програми Doc Undelete
NOT_FOUND_MSG DB 13,'File not found deleted$'; Messages
WRITTEN_OVER_MSG DB 13,'File already written over$'
DATA DB 1024 DUP (0); Место под directory и FAT
FIRST:; Начало программы
UNDEL PROC NEAR
MOV AL,CS: FCB_LOC; Получить drive specified - 0 если one given
SUB AL,1; Was it a 1 (A:) or 2 (B:)?
JNC DRIVE_KNOWN; Yes, store drive number
MOV AH, 19H; Нет, получить диск по умолчанию
INT 21H
DRIVE_KNOWN:
MOV DISK_DRIVE,AL; Запомнить диск
MOV DX,17; Директории начинаются с 19 сектора
LOOPs: ADD DX,1; Переход к следующему кластеру директории
CMP DX,33; Проверка на последний кластер директории
JB READ_DIR; Если не последний, переход на чтение
MOV AH,9; Иначе выходим с выдачей сообщения,
LEA DX,NOT_FOUND_MSG; о том, что файл не найден
INT 21H
JMP OUT1; Exit
READ_DIR:
AND I_O_FLAG,0; Выбираем чтение
CALL CLUSTER_I_O; Читаем кластер
LEA DI,DATA; Загружаем адрес проверки
MOV AL,0E5H; Символ проверки - первый символ удаленного файла E5H
MOV CX, 200H; Количество символов проверки 512
SEARCH:;
REPNE SCASB; Проверка
JCXZ LOOPs; If no match (Counter=0), get next dir cluster