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

UptoLike

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

111
xor cx,cx ; Старшая часть смещения
mov dx,3 ; Младшая часть смещения
int 21h
; Запись в файл
mov ah,40h ; Запись
mov bx,handler ; Дескриптор файла
mov cx,3 ; Количество записываемых байтов
lea dx,key ; Смещение записываемых байтов
int 21h
jnc nst2
; Ошибка чтения
lea dx,err_read
mov al,8
call msg
int 20h
nst2: ; Сообщение основной программы
lea dx,ok
mov al,0
call msg
call kbin ; Ожидание
int 20h
nstart: cmp ax,key ; Сравн. истинного и зап. номеров
jz nst2 ; Все в порядке
; Сообщение основной программы
lea dx,nok
mov al,0
call msg
call kbin ; Ожидание
int 20h
; Чтение подкаталога в buf3
; Вход: SI = начало записи этого подкаталога в вышестоящем каталоге
read_cat proc near
mov bp,clu0
; BP = лог.номер сект.первого доступного кластера
lea bx,buf2 ; BR
mov cl,[bx+11].clus_siz ; Секторов в кластере
xor ch,ch
mov ax,[si].b_clu ; Нач. кластер найд. кат.
sub ax,2 ; Кластеры начинаются с 2
mul cx ; DX:AX нач.сект.найд.кат.отн.конца корн.
add ax,bp
adc dx,0 ; DX:AX лог.нач.сект.найд.кат.
lea bx,b_param ; Блок параметров
mov word ptr [bx].sec_num,ax ; Отн. номер сект.
mov word ptr [bx+2].sec_num,dx ; Отн. номер сект.
mov al,2 ; Диск С
mov cx,-1 ; Признак > 32 M
mov di,num_sec
mov [bx].number_s,di ; Кол-во читаемых секторов
mov [bx].b_off,offset buf3
                                     111



        xor   cx,cx        ; Старшая часть смещения
        mov dx,3           ; Младшая часть смещения
        int   21h
; Запись в файл
        mov ah,40h         ; Запись
        mov bx,handler ; Дескриптор файла
        mov cx,3           ; Количество записываемых байтов
        lea   dx,key       ; Смещение записываемых байтов
        int   21h
        jnc   nst2
; Ошибка чтения
        lea   dx,err_read
        mov al,8
        call msg
        int   20h
nst2:                      ; Сообщение основной программы
        lea   dx,ok
        mov al,0
        call msg
        call kbin          ; Ожидание
        int   20h
nstart: cmp ax,key         ; Сравн. истинного и зап. номеров
        jz    nst2         ; Все в порядке
; Сообщение основной программы
        lea   dx,nok
        mov al,0
        call msg
        call kbin          ; Ожидание
        int   20h
; Чтение подкаталога в buf3
; Вход: SI = начало записи этого подкаталога в вышестоящем каталоге
read_cat      proc near
        mov bp,clu0
; BP = лог.номер сект.первого доступного кластера
        lea   bx,buf2             ; BR
        mov cl,[bx+11].clus_siz ; Секторов в кластере
        xor   ch,ch
        mov ax,[si].b_clu         ; Нач. кластер найд. кат.
        sub ax,2           ; Кластеры начинаются с 2
        mul cx             ; DX:AX нач.сект.найд.кат.отн.конца корн.
        add ax,bp
        adc dx,0           ; DX:AX лог.нач.сект.найд.кат.
        lea   bx,b_param ; Блок параметров
        mov word ptr [bx].sec_num,ax           ; Отн. номер сект.
        mov word ptr [bx+2].sec_num,dx         ; Отн. номер сект.
        mov al,2           ; Диск С
        mov cx,-1          ; Признак > 32 M
        mov di,num_sec
        mov [bx].number_s,di ; Кол-во читаемых секторов
        mov [bx].b_off,offset buf3