Курсовая работа: Розробити програму-аналог програми 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;

К-во Просмотров: 265
Бесплатно скачать Курсовая работа: Розробити програму-аналог програми Doc Undelete