| Alex_K |
17th February 2012 22:55 |
Quote:
Originally Posted by Patron
(Post 468551)
У 1801ВМ1 всё просто - бит Т запрещает обслуживание IRQ, а команда WAIT на время своего выполнения (которое продолжается, пока на шине есть хоть один запрос IRQ) отменяет этот запрет.
|
Бит T не запрещает обслуживание IRQ, прерывание по T выше по приоритету, чем IRQ, поэтому прерывание по IRQ и не возникнет. А команда WAIT при своем выполнении маскирует прерывание по T-разряду и ожидает любого внешнего незамаскированного прерывания (ACLO, EVNT, VIRQ). Если на 1801ВМ2 запретить все внешние прерывания установкой битов 8 и 7 в PSW и дать команду WAIT, то процессор будет долго и упорно ждать прерывания, а т.к. они все замаскированы, то и ждать он их будет вечно, до тех пор пока его не сбросят сигналом DCLO, ну и соответственно не запустят снятием DCLO и ACLO.
Quote:
Originally Posted by Patron
(Post 468551)
Поскольку во время выполнения единственной команды WAIT обслуживаются ВСЕ "накопившиеся" запросы IRQ - из этого (насколько я понимаю) следует, что приоритет Т-трапа ниже приоритета IRQ.
Часто пишут, что приоритет Т-трапа выше, чем приоритет IRQ, но у 1801ВМ1 это точно не так.
|
Нет не следует, просто во время выполнения WAIT прерывание по T-разряду маскируется. Но об этом я написал выше.
Quote:
Originally Posted by Patron
(Post 468551)
Думаю, что и у ВМ2 - тоже.
|
Неправильно думаете. Надо иметь реальный процессор и проверять на нем.
|