27.02.2011, 20:08 | #1 (permalink) |
Новичок
Регистрация: 27.02.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Ассемблер - контроллер прерываний
Изучаю по учебнику про Программируемый Контролер Прерываний (ПКП).Пытаюсь написать программу на ассемблере, которая устанавливает контроллер в в Режим специального маскирования В учебнике про ПКП очень скудно написано прочитала статью Ссылка удалена тут Ссылка удалена Контролер принимает запросы от вычислительного устройства , сортирует их по приоритету и посылает запрос на прерывание в ЦП вместе с информацией о местоположение программы. Контроллер программируется с помощью команд, которые формируются в регистре АL центрального процессора и передаются в ПКП по команде OUT. Различают два вида команд программирования: команды инициализации ICW, используемые для начальной подготовки контроллера к работе, и рабочие команды OCW. Мне нужна команда OCW3 - режим cпециального маскирования. Применяется для того, чтобы программы обслуживания прерываний могли динамически изменять структуру системных приоритетов в процессе работы. Например, при выполнении какой-либо части подпрограммы обслуживания необходимо запретить запросы более низких уровней, а при выполнении другой части - разрешить их. Трудность реализации таких действий состоит в том, что пока выполняется подпрограмма и соответствующий разряд в регистре РОП не сброшен, контроллер не реагирует на запросы с более низким приоритетом. Для разрешения прерываний со всех уровней (в том числе и с более низких) устанавливается режим специального маскирования (затенения), при котором запрещается только прерывание на данном уровне. Этот режим задается и отменяется командой OCW3. как я понимаю : выполняется задача1( состоит из нескольких уровней)- поступает запрос(задача2 - приоритет ниже) : при "выключеном режиме специального маскирования" запросы будут отклоняться до момента окончания выполнения задачи1, при "включеном" запрос(задача2 - приоритет ниже) пройдет и будет ожидать окончания выполнения одного из уровней задачи1 -> выполняется задача2 потом продолжится выполнение задачи Перед работой контроллер должен быть проинициализирован. Инициализация осуществляется загрузкой управляющих слов (до 4-х байт). После инициализации контроллер переходит в операционный режим. Мне нужен Порт 20h - OCW3 управления операцией биты 1..0 чтение регистра: 0 или 1 чтения нет, 2 читать IRR при следующем обращении, 3 читать ISR при следующем обращении; бит 2 1 указание сформировать слово-состояния (содержит номер наивысшего запроса из поступивших); биты 4..3 01 признак OCW3; биты 6..5 специальное маскирование: 0 или 1 отсутствует, 2 отменяет, 3 устанавливает (при этом выравниваются приоритеты запросов); бит 7 равен нулю. ---------------------------------- ;---установка прерывания PUSH DS ;сохраняем DS MOV DX,OFFSET ROUT ;смещение для процедуры в DX MOV AX,SEG ROUT ;сегмент процедуры MOV DS,AX ;помещаем в DS MOV AH,20H;функция установки вектора MOV AL,60H ;номер вектора INT 21H ;меняем прерывание POP DS ;восстанавливаем DS ;---процедура прерывания ROUT PROC FAR . . IRET ROUT ENDP ----------------------------------------------- правильно? Последний раз редактировалось Fenix; 12.06.2013 в 11:39 Причина: Ссылка мертва |
27.02.2011, 20:08 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Прошу вас, ознакомьтесь с похожими темами Ассемблер. Срочно нужна помощь Ассемблер подгружаемый в паскаль Кто изучал ассемблер, дайте хорошую книжку для новичков. Ассемблер |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|