Курсовая работа: Розробити програму-аналог програми Doc Undelete
MOV BX,11; Сравнение 11 символов
CMPLOOP: DEC BX; уменьшить количество сравниваемых символов
CMPS byte ptr [DI], [SI] ; Сравнить файлы
JZ CMPLOOP; Если совпадают, переход на следующий чимвол
CMP BX,0; Сравнение закончено, все символы проверены?
JNZ SEARCH; Нет, переход на продолжение поиска
MOV AX,CS: FCB_LOC+1; Да, получить первый символ файла
MOV [DI-12],AX; Заменить символ E5H на первыый символ файла
OR I_O_FLAG,1; Выбрать запись 1 кластера
CALL CLUSTER_I_O; Запись измененной директории
MOV AX, [DI+14] ; Получить начальный сектор в FAT
MOV START_CLUSTER,AX; Запомнить начальный сектор FAT
MOV AX, [DI+16] ; Получить размер файла (младшее слово)
TEST AX,511; MOD (size,512) =0?
JZ EVEN_K; Да, не добавлять 1 кластер после SHR
ADD AX,512; Нет, добавлять другие кластера
EVEN_K: MOV CL,9; Деление на 512 (512=размер кластера)
SHR AX,CL
MOV DX, [DI+18] ; Получить размер файла (старшее слово)
MOV CL,7; Умножение на 128 (2^16/2^9)
SHL DX,CL
ADD AX,DX; Добавить старшее слово до младшего слова
MOV FILE_SIZE,AX; Сохранить размер
MOV DX,1; Прочитать FAT
AND I_O_FLAG,0; Выбор чтения 1 кластера
CALL CLUSTER_I_O
MOV CX,FILE_SIZE; Счетчик количества кластеров
MOV AX,START_CLUSTER; Проверка на то, что первый кластер свободный
DEC AX;