Курсовая работа: Розробити програму-аналог програми Doc Undelete
CMP DX,START_CLUSTER
JE FILL; Если свободный, переход на заполнение FAT
MOV AH,13H; Нет, файл перезаписуется
MOV DX,FCB_LOC; Удаляется сохраненная запись директории
INT 21H;
MOV AH,9; Выход с ошибкой
LEA DX,WRITTEN_OVER_MSG
INT 21H
JMP OUT1; переход на выход
FILL: MOV AX,DX; Установить старое свободное пространство в FAT на первый найденный
MOV DX,0FFFH; Указать, что это последний кластер (FFFH=End of file)
CMP CX,1; Если последняя запись? (CX=количество кластеров)
JZ LAST; Да, не надо шукать следующую свободную запись
CALL GET_NEXT_ZERO; Вызов с AX=старый 0 кластер. Возвращает DX=новый 0 кластер
LAST: CALL PUT_FAT_ENTRY; Вызов с AX=старый 0 кластер. Возвращает DX=новый 0 кластер в FAT
LOOP FILL; Обработать следующий кластер
MOV DX,1; Запись измененной 1 копии FAT
OR I_O_FLAG,1; Выбор записи кластера
CALL CLUSTER_I_O; Запись кластера
MOV DX,3; Запись измененной 1 копии FAT
CALL CLUSTER_I_O; Запись кластера
OUT1: INT 20H; Выход
UNDEL ENDP
CLUSTER_I_O PROC NEAR; Чтение кластера
; Вход: DX-начальный сектор
PUSH AX; Сохранить испо?