ВУЗ:
Составители:
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 ; Адрес в тек. каталоге
Страницы
- « первая
- ‹ предыдущая
- …
- 110
- 111
- 112
- 113
- 114
- …
- следующая ›
- последняя »
