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

UptoLike

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

112
mov dx,cs
mov [bx].b_seg,dx
int 25h ; Каталог в buf3
pop cx
jnc rc1 ; Ошибки нет
; Ошибка чтения сектора
lea dx,err_read
mov al,5
call msg
int 20h
rc1: ret
read_cat endp
; Сравнение тек. записи каталога с искомой (point)
; При успешном поиске: flag = 1
; SI – нач. найденной записи
comp proc near
mov flag,0 ; Сброс флага поиска
test byte ptr f_flag,0ffh ; Ищется файл ?
jnz comp1 ; Да
test byte ptr [si].f_attr,10h ; Подкаталог ?
jnz comp1 ; Подкаталог
ret ; Выход, если не подкаталог
comp1: mov bp,si ; Нач. тек. имени в каталоге
mov di,point ; Указ. тек. кат.
push cx
mov cx,11
comp2: mov al,byte ptr [di] ; Симв. тек. кат.
cmp al,'.' ; Разделитель ?
jnz comp3 ; Не разделитель
inc di
jmp comp2 ; Пропуск разделительной точки
comp3: cmp al,'\' ; Конец имени ?
jz comp31 ; Конец
cmp al,0 ; Конец всего ?
jnz comp4 ; Не конец
; Имя каталога совпало (имя короче 11 симв.)
comp31: mov flag,1 ; Взведение флага поиска
pop cx
ret ; Выход при успешном поиске
comp4: cmp byte ptr cs:[bp],20h ; Пробел ?
jnz comp5 ; Не пробел
inc bp
dec cx
jmp comp4 ; Пропуск пробела
comp5: cmp al,cs:[bp]
jz comp6 ; Символы совпали
; Символы не совпали
pop cx
ret ; Выход при несовпадении имен
comp6: inc di ; Адрес в тек. каталоге
                                        112



        mov dx,cs
        mov [bx].b_seg,dx
        int     25h          ; Каталог в buf3
        pop cx
        jnc     rc1    ; Ошибки нет
; Ошибка чтения сектора
        lea     dx,err_read
        mov al,5
        call msg
        int     20h
rc1: ret
read_cat        endp
; Сравнение тек. записи каталога с искомой (point)
; При успешном поиске: flag = 1
; SI – нач. найденной записи
comp proc near
        mov flag,0           ; Сброс флага поиска
        test byte ptr f_flag,0ffh ; Ищется файл ?
        jnz     comp1               ; Да
        test byte ptr [si].f_attr,10h      ; Подкаталог ?
        jnz     comp1                      ; Подкаталог
        ret                  ; Выход, если не подкаталог
comp1: mov bp,si             ; Нач. тек. имени в каталоге
        mov di,point         ; Указ. тек. кат.
        push cx
        mov cx,11
comp2: mov al,byte ptr [di]         ; Симв. тек. кат.
        cmp al,'.'                  ; Разделитель ?
        jnz     comp3               ; Не разделитель
        inc     di
        jmp comp2                   ; Пропуск разделительной точки
comp3: cmp al,'\'                   ; Конец имени ?
        jz      comp31              ; Конец
        cmp al,0                    ; Конец всего ?
        jnz     comp4               ; Не конец
; Имя каталога совпало (имя короче 11 симв.)
comp31: mov flag,1                  ; Взведение флага поиска
            pop cx
            ret              ; Выход при успешном поиске
comp4: cmp byte ptr cs:[bp],20h ; Пробел ?
        jnz     comp5               ; Не пробел
        inc     bp
        dec cx
        jmp comp4                   ; Пропуск пробела
comp5: cmp al,cs:[bp]
        jz      comp6               ; Символы совпали
; Символы не совпали
        pop cx
        ret                  ; Выход при несовпадении имен
comp6: inc di                ; Адрес в тек. каталоге