Данная программа ISR увеличивает счетчик
; NOTES (примечания)
; Данная программа ISR увеличивает счетчик прерываний (dwCount1)
; и заново маскирует устройство.
;
; Если установлен флаг "fStopping", устройство не маскируется заново.
;
FIXED_TEXT SEGMENT PARA PUBLIC 'CODE'
segData1 dw DGroup
assume CS:FIXED_TEXT,DS:NOTHING
IntSvcRtn proc far
push ax
push dx
push ds
mov ds,segDatal
assume ds:DGroup
inc dwCount1
mov al,NOT FAKE_CTL_EOI
mov dx,FAKE_PORT
out dx,al ; послать EOI устройству
mov al,EOI
out PIC00,al ; послать EOI контроллеру PIC
ife (PIC00 EQ INTA00)
out INTA00,al ; послать EOI главн. контроллеру PIC также
endif
cmp fStopping,0 ; существует?
jnz isr9 ; если да, то не нужен перезапуск
mov al,NOT FAKE_CTL_START
mov dx,FAKE_PORT
out dx,al ; перезапуск ввода-вывода
isr9:
pop ds
assume ds:NOTHING
pop dx
pop ax
iret
IntSvcRtn endp
FIXED_TEXT ENDS
;IP_main - точка входа в программу
; NOTES (примечания)
; Драйвер устройства выдает для пользователя приглашение:
;S)tart(начать) или Q)uit(выйти). Если пользователь нажимает S,
;программа разрешает прерывания и вооружает устройство, печатая точку
;каждый раз, как устройство прерывается.
;
_TEXT SEGMENT PARA PUBLIC 'CODE'
segData2 dw DGroup
segfixed dw FIXED_TEXT
assume cs:_TEXT,ds:NOTHING
_main label far
mov ds,segData2 ;инициализируется сегмент данных по умолчанию
assume ds:DGroup
mov dx,FAKE_PORT
in al,dx ; присутствует ли фиктивное устройство?
or al,al
jns m10 ;пропустить, если да
mov dx,OFFSET DGroup:sdNoBogus
mov ah,9
int 21h ; в противном случае печатать сообщение об ошибке
mov ax,4C01h
int 21h ; и выйти из системы
m10:
mov ax,3500h+INT_DEV
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий