резервное копирование данных, доктор веб, panda, немецко русский словарь, архиватор winrar, .

simple1site.narod.ru

 
 На сайте
   Главная
   Links

 Разделы
программы архиваторы
win rar
антивирусные программы
антивирус panda
програмное обеспечение
win zip
программа резервного копирования
антивирусные программы
asplinux deluxe
программы архиваторы
avast home
 Главная  Links
{img1} ad aware
За- тем программа ПРЕРЫВАНИЙ устанавливает бит DONE ("выполнено") в слове состояния и возвращает управление MS-DOS. Так как возврат управления должен быть выполнен командой RETF, программа ПРЕРЫВА- НИЙ определяется как процедура типа FAR. Листинг 6-3.
panda 2007
{img2} сетевой экран
Пример программы ПРЕРЫВАНИЙ. ----------------------------------------------------------------- ; ; Определение битов слова состояния драйвера устройства ; ST_ERROR equ 1000000000000000b ; была ошибка ST_BUSY equ 0000001000000000b ; устройство занято ST_DONE equ 0000000100000000b ; команда выполнена ; ; Определение кодов ошибки при обработке команд ; WRITE_PROTECT equ 0 ; защита от записи UNKNOWN_UNIT equ 1 ; неопознано устройство NOT_READY equ 2 ; устройство не готово - 6-27 - UNKNOWN_COMMAND equ 3 ; команда не опознана . . ; ;********** Точка входа в программу ПРЕРЫВАНИЙ ************************ ; INTERRUPT proc far pusha ; сохраним все рабочие push ds ; регистры push es push cs ; установим локальный pop ds ; сегмент данных les di,[req_ptr] ; получим адрес блока mov bl,es:[di].command ; запроса и код ; команды ; ; Установим заранее флаг ошибки (на случай, если команда будет ; неопознана) ; mov ax,(ST_ERROR or UNKNOWN_COMMAND) cmp bl,[max_cmd] ; эта команда ja exit ; поддерживается ? ; ; Передадим управление соответствующему обработчику. На входе каждый ; обработчик получает регистры CS и DS установленными на сегмент ; DRIVER и регистры ES:DI указывающими на блок запроса.
win zip
{img3} avast pro
Свой статус ; обработчик должен вернуть в регистре AX. ; xor bh,bh ; превратим команду shl bx,1 ; в индекс call word ptr cs:jumptab[bx] ; обработаем команду ; ; Запишем статус в слово состояния блока запроса ; exit: push cs pop ds les di,[req_ptr] ; получим адрес блока or ax,ST_DONE ; запроса, установим mov es:[di].status,ax ; бит DONE и сохраним pop es ; статус pop ds ; восстановим контекст popa ret ; RETF INTERRUPT endp . . . ; ;********** Таблица переходов на обработку команд ******************* ; JUMPTAB label word dw offset INIT ; 0 - Инициализация dw offset MEDIA_CHECK ; 1 - Проверка носителя dw offset BUILD_BPB ; 2 - Построить BPB . . . - 6-28 - dw offset NO_COMMAND ; 16 dw offset GET_LOGICAL ; 17 - Получить имя ЛУ dw offset SET_LOGICAL ; 18 - Установить ЛУ . . . --------------------------------------------------------------------- Слово состояния, показанное на рис.6-5, используется для инди- кации ошибок, случившихся при выполнении какой-либо команды (бит ERROR -- ошибка) и для отображения состояния устройства по коман- дам опроса статуса и проверки смены носителя (бит BUSY -- заня- то). 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ----T---T---T---T---T---T---T---T---T---T---T---T---T---T---T---¬ ¦ E ¦ ¦ ¦ ¦ ¦ ¦ B ¦ D ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ R ¦ ¦ ¦ ¦ ¦ ¦ U ¦ O ¦ ¦ ¦ КОД ОШИБКИ ¦ ¦ ¦ ¦ R ¦ ЗАРЕЗЕРВИРОВАНО ¦ S ¦ N ¦ ¦ ЕСЛИ БИТ 15 РАВЕН 1 ¦ ¦ ¦ O ¦ ¦ ¦ ¦ ¦ ¦ Y ¦ E ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ R ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦===- Значение битов : ERROR = 1 : При обработке команды случилась ошибка. Код ошибки находится в битах с 0 по 7. BUSY = 1 : Устанавливается командами опроса состояния и проверки смены носителя. DONE = 1 : Команда выполнена. Устанавливается на выходе. Рисунок 6-5.
домашняя бухгалтерия

norton

резервное копирование данных, доктор веб, panda, немецко русский словарь, архиватор winrar, .
 

утилиты резервного копирования

Для передачи управления определенному обработчику необходимо указать индекс требуемой подпрограммы, заданной своим смещением в таблице пере- ходов. Этот индекс (в нашем случае это код команды) преобразуется в смещение в таблице, после чего выполняется косвенный вызов подпрограммы или переход на нее через таблицу переходов call word ptr cs:jumptab[bx] ; обработать команду В связи с тем, что индекс (т.е. код команды) может быть боль- ше, чем максимальный из используемых кодов команд, программа ПРЕ- РЫВАНИЙ должна выполнять проверку индекса для того, чтобы убе- диться в его правильности. При этом, вместо сравнения индекса с каким-либо заранее фиксированным значением, программа ПРЕРЫВАНИЙ сравнивает код команды с максимально допустимым значением, храня- щимся в поле max_cmd : cmp bl,[max_cmd] ; команда допустима ? Для того, чтобы понять пользу хранения максимально допустимого значения в памяти, взгляните на таблицу 6-2. В этой таблице представлены команды, поддерживаемые различными версиями MS-DOS. Максимальный код команды, обеспечиваемый MS-DOS версий до 3.0, имеет значение 0CH. Однако, учитывая тот факт, что max_cmd распо- лагается в памяти, драйвер может модифицировать это значение во время инициализации, позволяя, таким образом, использовать новые команды, если драйвер загружен под управлением новой версии MS-DOS. - 6-26 - Таблица 6-2 Команды для драйверов устройств --------T-------T---------T---------T---------T---------------------- Команда ¦ Версия¦ Блоковые¦ Симв-ные¦ Атрибут ¦ Название команды ¦ DOS ¦ устр-ва¦ устр-ва¦ ¦ --------+-------+---------+---------+---------+----------------------- 0: ¦ 2.0 ¦ + ¦ + ¦ ¦ INIT 1: ¦ 2.0 ¦ + ¦ - ¦ ¦ MEDIA CHECK 2: ¦ 2.0 ¦ + ¦ - ¦ ¦ BUILD BPB 3: ¦ 2.0 ¦ + ¦ + ¦ 14:IOCTL¦ INPUT IOCTL 4: ¦ 2.0 ¦ + ¦ + ¦ ¦ INPUT 5: ¦ 2.0 ¦ - ¦ + ¦ ¦ Nondestructive INPUT 6: ¦ 2.0 ¦ - ¦ + ¦ ¦ INPUT STATUS 7: ¦ 2.0 ¦ - ¦ + ¦ ¦ INPUT FLUSH 8: ¦ 2.0 ¦ + ¦ + ¦ ¦ OUTPUT 9: ¦ 2.0 ¦ + ¦ + ¦ ¦ OUTPUT with VERIFY 10: ¦ 2.0 ¦ - ¦ + ¦ ¦ OUTPUT STATUS 11: ¦ 2.0 ¦ - ¦ + ¦ ¦ OUTPUT FLUSH 12: ¦ 2.0 ¦ + ¦ + ¦ 14:IOCTL¦ OUTPUT IOCTL 13: ¦ 3.0 ¦ + ¦ + ¦ 11:OCRM ¦ DEVICE OPEN 14: ¦ 3.0 ¦ + ¦ + ¦ 11:OCRM ¦ DEVICE CLOSE 15: ¦ 3.0 ¦ + ¦ - ¦ 11:OCRM ¦ REMOVABLE MEDIA 16: ¦ 3.1 ¦ - ¦ + ¦ 13:OTB ¦ OUTPUT until busy 19: ¦ 3.2 ¦ + ¦ + ¦ 6:GIOCTL¦ Generic IOCTL Request 23: ¦ 3.2 ¦ + ¦ - ¦ 6:GIOCTL¦ Get Logical Device 24: ¦ 3.2 ¦ + ¦ - ¦ 6:GIOCTL¦ Set Logical Device -------+-------+---------+---------+---------+----------------------- Примечание 1. В колонке "Версия DOS" указана самая ранняя версия MS-DOS, начиная с которой поддерживается эта команда. Примечание 2. В колонке "Атрибут" указаны бит слова атрибутов драйвера, разрешающий использование данной команды. ===================================================================== Последняя задача программы ПРЕРЫВАНИЙ после обработки требуе- мой команды заключается в установке статуса возврата в блоке зап- роса. В листинге 6-3 ожидается, что обработчик каждой команды возвращает статус завершения в регистре AX. После возврата управ- ления от обработчика, программа ПРЕРЫВАНИЙ записывает статус в поле слова состояния заголовка запроса (поле request.status).


avast 4


 
 

CNews: Новости | e-Business | Hi-Tech | Telecom List.ru - каталог ресурсов интернет Directrix џ­¤ҐЄб жЁвЁа®ў ­Ёп
Сайт управляется системой uCoz