Внешние (аппаратные) прерывания.
Сигналы внешних прерываний возникают в устройствах, поступают в МП через контроллер. К 8 входным линиям контроллера IRQ0..IRQ7 подключены выводы внешних устройств, на которых возникают сигналы прерываний. Контроллер направляет сигналы от устройств в МП, на вход IntR и передает по линиям данных номер вектора, через который должна быть вызвана процедура обработки прерывания. N вектора образуется в контроллере путем сложения базового вектора в одном из регистров контроллера и номера линии IRQ. Базовый вектор для одного контроллера =8, следовательно номера векторов соответствующих прерываний лежат в диапазоне 08h..0Fh. Для обслуживания большого кол-ва устройств, контроллеры объединяются в веерообразную структуру. Один из контроллеров ведущий, второй - ведомый. Соединение производится через канал ввода-вывода. Базовый вектор для ведомого контроллера =70h порт A0h A1h, для ведущего =8h порт 20h 21h. Логическая структура контроллера прерываний. 0 0 Х 1-0 МП IF=1 1 0 Х 0 EOI конец прерываний 0 0 Х 0 0 0 Х 0 0 0 Х 0 0 0 Х 0 0 0 Х 0 0 0 Х 0 Регистр Запросов IRR Регистр Метки IMR Схема Анализа приоритетов Регистр обслуживания запросовISR Сигнал по линии IRQ поступает на вход регистра запросов и устанавливает 1 соответствующий бит. Если в регистре маски соответствующий бит равен 0,прерывание не замаскировано и сигнал проходит схему анализа приоритетов. Стандартная настройка приоритетов чем > N линий IRQ, тем ниже приоритет. Сигнал дает разрешение на установку бита в регистре обслуживаемых запросов и поступает на вход INTR МП. МП регистрирует поступление сигнала только в том случае, если IF=1. Получив сигнал ENTR,МП выдает сигнал INTA, который поступает в контроллер прерываний и выполняет 2 действия:1. Устанавливает нулевой бит в регистре обсл-их запросов и сбрасывает бит в регистре запросов. По этой линии может прийти следующий сигнал прерываний. 1в регистре обсл-их запросов воздействует на схему анализа приоритета т.о., что запрещены все прерывания с более низким приоритетом. Для разблокировки прерывания выдается сигнал EOI. Это выполняется в процедуре обработки прерываний. Сигнал INTA сбрасывает флаг IF, т.о. оказываются запрещенным все прерывания. Поэтому процедура обработки прер-ия должна воздействовать на IF в начале своей работы.
Особенности программ в СОМ-формате. Структура, хранение на диске, загрузка в память,варианты завершения. Особенности: - минимальная модель памяти - размер < 64 кб (сегмент) - абсолютный образ памяти - не содержит заголовков и настроечной информации, только машинный код - не контролируется содержимое Загружается в память с помощью системного загрузчика XEC. Общая структура: <имя сегмента кодов>SEGMENT<параметры> ASSUME СS:<имя сегм. кодов> DS::<имя сегм. Дан.>SS:<имя сегмента стека> ES: nothing ORG 100h (явно задает смещение, резервирование под префикс первой инструкции) <Имя процедуры> PROC NEAR ;код программы ;завершение процедуры <имя процедуры> ENDP ; определение данных <Имя сегмента кодов> ENDS END <имя программы> Если определение данных требуется сделать в начале программы, то первой инструкцией должна быть mp main Варианты завершения: - инструкция RET - INT 20h в конце процедуры - ф-ция 4ch прерывания INT 21h позволяет передать в вызываемую процедуру код завершения Особенности программ в ЕХЕ-формате. Структура, хранение на диске, загрузка в память,варианты завершения. - малая, средняя, большая модель памяти - содержит любое количество сегментов, лед. может иметь любой размер - имеет спец. заголовок, кот. используется системным загрузчиком при запуске программы Загружается в память с помощью системного загрузчика EXEC. При загрузке программе выделяется 2 блока памяти, один под переменные окружения, другой для самой программы. Структура: <имя сегмента стека> SEGMENT <параметры> ; определение размера стека <имя сегмента стека> ENDS <имя сегмента данных> SEGMENT <параметры> ; определение данных <имя сегмента данных> ENDS <имя сегмента кодов> SEGMENT <параметры> ASSUME СS:<имя сегм. кодов> DS: <имя сегм. Данн.> SS:<имя сегмента стека> ES: nothing <имя процедуры> PROC FAR ;Инициализация программы ; код ; завершение <имя процедуры> EDNP <имя сегмента кодов> ENDS END <имя основной процедуры> Инициализация: PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX Варианты завершения: - FAR RET - 4ch int 21h
|