В IBM PC/AT количество внешних устройств, которые могут подавать запрос на прерывание, превышает 8. Для обработки такого количества запросов применяют каскадирование микросхем 8259A. Выход INT ведомой микросхемы поступает на вход IR2 ведущей микросхемы (вот почему IR2 был в резерве)
Запросы IRQ8 - IRQ15 обслуживаются векторами int 70h – int 77h
Значит, ICW2 имеет вид:
(у номеров запроса 8-15 отбрасывается старший разряд)
IRQ8 - часы реального времени
IRQ9 - прерывание от контроллера EGA
IRQ10 -12 резерв
IRQ13 - математический сопроцессор
IRQ14 - контроллер жесткого диска
IRQ15 - резерв
Адреса портов
INTB00 EQU OA0h
INTB01 EQU OA1h
Поэтому если мы пишем свою программу обработки прерывания для устройства, подключенного к ведомому контроллеру 8259А, то заканчивать ее надо командами:
cli
mov al, EOI
out INTB00, al
IRET