Разработка блока АЦП


         

DI указывает на смещение до


;стратегия драйвера
DEV_STRATEGY:  
MOV    CS:KEEP_ES,ES
              MOV    CS:KEEP_BX,BX
              RET
KEEP_ES              DW     ?
KEEP_BX        DW    ?
;обработчик прерывания устройства
DEV_INTERRUPT: 
PUSH ES                    ;сохраняем регистры
              PUSH DS
              PUSHA
       MOV    AX,CS:KEEP_ES        ;ES:BX указывают на заголовок запроса
       MOV    ES,AX                ;
       MOV    BX,CS:KEEP_BX        ;
       MOV    AL,ES:[BX]+2         ;получаем код команды из заголовка
       SHL    AL,1                 ;умножаем на 2 (т.к. таблица словная)
       SUB    AH,AH                ;обнуляем AH
       LEA    DI,FUNCTIONS         ; DI указывает на смещение до таблицы
       ADD    DI,AX                ;добавляем смещение в таблице
       JMP    WORD PTR [DI]        ;переходим на адрес из таблицы
FUNCTIONS       LABEL  WORD              ;это таблица функций
       DW     INITIALIZE
       DW     CHECK_MEDIA
       DW     MAKE_BPB
       DW     IOCTL_IN
       DW     INPUT_DATA
       DW     NONDESTRUCT_IN
       DW     INPUT_STATUS
       DW     CLEAR_INPUT
       DW     OUTPUT_DATA
       DW     OUTPUT_VERIFY
       DW     OUTPUT_STATUS
       DW     CLEAR_OUTPUT
       DW     IOCTL_OUT
;---выход из драйвера, если функция не поддерживается
CHECK_MEDIA:
MAKE_BPB:
IOCTL_IN:
NONDESTRUCT_IN:
INPUT_STATUS:
CLEAR_INPUT:
OUTPUT_VERIFY:
OUTPUT_STATUS:
CLEAR_OUTPUT:
IOCTL_OUT:
       OR     ES:WORD PTR [BX]+3,8103H   ;модифицируем статус
       JMP    QUIT
;---процедуры для поддерживаемых кодов
INITIALIZE:
       LEA    AX,E_O_P                          ;смещение конца программы в AX
       MOV    ES:WORD PTR [BX]+14,AX     ;помещаем его в заголовок
       MOV    ES:WORD PTR [BX]+16,CS 
       JMP    QUIT
INPUT_DATA:
       MOV    CX,ES:[BX]+18                     ;получаем число символов
       LES    DI,ES:[BX]+14                     ;получаем адрес буфера данных
       PUSH   ES

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий