Реферат: Драйвер виртуального диска

jae out_of_range ; логических секторов

add cx,request.count ; найдем номер конечного

dec cx ; сектора и тоже сравним

cmp cx,bpb.nls ; если номера секторов

jb in_range ; нормальные то продолжим

; заданные секторы не содержатся на диске

out_of_range:

mov ax,ST_ERROR OR SECTOR_NOT_FOUND

mov request.count,0 ; ничего не было передано

stc ; возвращаемся с ошибкой

ret

; вычислим сегментный адрес начального сектора

in_range:

mov ax,bpb.bps ; количество байт в секторе

mov cl,4 ; разделим на 16 для получения

shr ax,cl ; размера в параграфах

mul request.start ; смещение параграфа относи-

; тельно начала диска

add ax,RPARA ; смещение параграфа относи-

mov dx,cs ; тельно CS

add ax,dx ; абсолютное смещ. параграфа

mov si,ax ; сохраним сегмент в SI

; вычислим и проверим счетчик передаваемых данных

mov ax,bpb.bps ; размер сектора в байтах

mul request.count ; счетчик передачи в байтах

cmp dx,0 ; проверим на корректность

jne out_of_range

; выровняем счетчик в AX для предотвращения перекрытия

mov cx,word ptr request.bufptr

К-во Просмотров: 654
Бесплатно скачать Реферат: Драйвер виртуального диска