Системное программное обеспечение. Рощин А.В. - 110 стр.

UptoLike

Составители: 

110
st43: test byte ptr [di],0ffh ; Конец имени каталога ?
jz st5 ; Нашли !
inc di ; Переход к следующему имени кат.
mov point,di
call read_cat ; Чт.найденного кат. в buf3
jmp st40
st5: call read_cat ; Чт.найденного кат. в buf3
; Поиск защищаемого файла
mov byte ptr f_flag,1 ; Ищется файл
lea ax,fil_name ; Защищаемый файл
mov point,ax
mov cx,64 ; Кол. анализируемых записей
lea si,buf3 ; Начало 1 записи каталога
st51: cmp byte ptr [si],0 ; Пустая запись ?
jz st52 ; Пропуск
cmp byte ptr [si],0e5h ; Стертая запись ?
jz st52 ; Пропуск
call comp ; Сравнение с искомым
cmp flag,1 ; Hайден ?
jz st53 ; Найден
st52: add si,32 ; Переход к следующей записи
loop st51
; Ошибка чтения
lea dx,err_read
mov al,6
call msg
int 20h
st53: mov ax,[si].b_clu
; В АХ начальный кластер этого файла
; Проверка флага инициализации
test f_key,0ffh ; Проверка флага инициализации
jz st54 ; Переход, если инициализации не было
jmp nstart ; Переход на основную программу
; Инициализация
st54: mov key,ax ; Запись начального кластера
mov f_key,1 ; Установка флага инициализации
; Открытие файла
mov ax,3d01h ; Открытие файла для записи
lea dx,fil_name ; Имя файла
int 21h
jnc nst1
; Ошибка чтения
lea dx,err_read
mov al,7
call msg
int 20h
nst1: mov handler,ax
; Установка указателя файла на 3
mov ax,4200h ; Абс. установка от начала
mov bx,handler ; Дескриптор файла
                                     110



st43: test byte ptr [di],0ffh    ; Конец имени каталога ?
      jz st5                     ; Нашли !
      inc    di           ; Переход к следующему имени кат.
      mov point,di
      call read_cat       ; Чт.найденного кат. в buf3
      jmp st40
st5: call read_cat        ; Чт.найденного кат. в buf3
; Поиск защищаемого файла
      mov byte ptr f_flag,1      ; Ищется файл
      lea    ax,fil_name         ; Защищаемый файл
      mov point,ax
      mov cx,64                  ; Кол. анализируемых записей
      lea    si,buf3             ; Начало 1 записи каталога
st51: cmp byte ptr [si],0        ; Пустая запись ?
      jz     st52                ; Пропуск
      cmp byte ptr [si],0e5h ; Стертая запись ?
      jz     st52                ; Пропуск
      call comp                  ; Сравнение с искомым
      cmp flag,1                 ; Hайден ?
      jz     st53                ; Найден
st52: add si,32                  ; Переход к следующей записи
      loop st51
; Ошибка чтения
      lea    dx,err_read
      mov al,6
      call msg
      int    20h
st53: mov ax,[si].b_clu
; В АХ начальный кластер этого файла
; Проверка флага инициализации
      test f_key,0ffh     ; Проверка флага инициализации
      jz     st54         ; Переход, если инициализации не было
      jmp nstart          ; Переход на основную программу
; Инициализация
st54: mov key,ax          ; Запись начального кластера
      mov f_key,1         ; Установка флага инициализации
; Открытие файла
      mov ax,3d01h        ; Открытие файла для записи
      lea    dx,fil_name ; Имя файла
      int    21h
      jnc    nst1
; Ошибка чтения
      lea    dx,err_read
      mov al,7
      call msg
      int    20h
nst1: mov handler,ax
; Установка указателя файла на 3
      mov ax,4200h        ; Абс. установка от начала
      mov bx,handler ; Дескриптор файла