| katia2011 
								Новенький    Offline | 
								|  | « Ответ #2 : 26-02-2011 23:34 »  |  | 
 
 RXL, контролер принимает запросы от вычислительного устройства , сортирует их по приоритету и посылает запрос на прерывание в ЦП вместе с информацией о местоположение программы. Контроллер  программируется  с  помощью  команд,  которые  формируются  в регистре АL центрального процессора и передаются  в ПКП по  команде OUT. Различают два вида команд программирования: команды инициализации ICW, используемые  для  начальной  подготовки  контроллера  к  работе,  и  рабочие команды OCW. Мне нужна команда OCW3 - режим cпециального  маскирования. Применяется  для  того,  чтобы программы обслуживания прерываний могли динамически изменять структуру системных приоритетов в процессе работы. Например, при выполнении какой-либо части подпрограммы обслуживания необходимо запретить запросы более низких  уровней,  а  при  выполнении  другой  части -  разрешить  их.  Трудность  реализации таких действий состоит в том, что пока выполняется подпрограмма и  соответствующий  разряд  в  регистре  РОП  не  сброшен,  контроллер  не  реагирует  на  запросы  с  более  низким  приоритетом.  Для  разрешения прерываний  со  всех  уровней (в  том  числе  и  с  более  низких)  устанавливается режим  специального  маскирования  (затенения),  при  котором  запрещается только  прерывание  на  данном  уровне.  Этот  режим  задается  и  отменяется командой OCW3.  
 как я понимаю : выполняется задача1( состоит из нескольких уровней)- поступает запрос(задача2 - приоритет ниже) : при "выключеном режиме специального  маскирования" запросы будут отклоняться до момента окончания выполнения задачи1, при "включеном"  запрос(задача2 - приоритет ниже) пройдет и будет ожидать окончания выполнения одного из уровней задачи1 -> выполняется задача2 потом продолжится выполнение задачи1
 -----
 если все верно как это реализовать?
 
 Добавлено через 9 часов, 57 минут и 12 секунд:
 Перед работой контроллер должен быть проинициализирован. Инициализация осуществляется загрузкой управляющих слов (до 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
 -----------------------------------------------
 
 правильно?
 
 
 
 |