Cтраница 1
Прерывающая программа представляет собой особую форму подпрограммы. Она отличается от обычных подпрограмм тем, что выход из текущей программы осуществляется не с помощью команды перехода, которая находится в определенном месте программы, а произвольно по запросу внешнего управляющего сигнала. [1]
Прерывающие программы добавляют сообщения об обращении с одного конца, которые извлекаются с другого конца для начала процесса обработки. Такой механизм обеспечивает выполнение процесса обработки принятой информации в порядке поступления входных запросов. [2]
Прерывающие программы при одновременно поступивших запросах выполняются в такой последовательности: 1) по вводу-1 выводу; 2) внешние; 3) программные или при обращении к супервизору. Порядок этот может быть изменен установкой соответствующей маски в ССП. Прерывание данного класса разрешается при наличии единицы в соответствующем разряде маски или запрещается ( маскируется), если этот разряд. Под маской понимается определенный для каждого прерывания разряд в коде слова состояния программы. [3]
Если прерывающая программа единственна, то прерывание может быть выполнено по схеме, приведенной на рис. 5.47. Сигнал с выхода ПР БПП подается на вход разрешения выдачи адреса строки PC БМУ. [4]
![]() |
Вектор состояния процессора в малых ЭВМ ( СМ-1420, СМ-1300 и др. [5] |
Каждая прерывающая программа может установить свою маску. При формировании маски 1 устанавливаются в разряды соответствующие запросам ( прерывающим программам) с более высоким, чем у данной программы, приоритетом. [6]
Набор прерывающих программ работает как бы в режиме мультипрограммной системы. Например, в типичном случае во время работы телетайпа по выводу длинного текста, записанного в буферной памяти, программа времени каждые 16 мс выдает сигнал начала регенерации изображения на дисплее и примерно один раз в секунду программа обработки клавиатуры воспринимает коды символов, вводимых оператором в ЭВМ через клавиатуру. Каждая из этих программ работает асинхронно и совершенно независимо от всех других. [7]
Выполнение прерывающей программы начинается с запоминания в памяти содержимого тех общих регистров и регистров плавающей точки, которые ею будут использованы. Далее выполняется собственно прерывающая программа, которая начинается с анализа кода прерывания и определения конкретной причины прерывания и инициирования подпрограммы отработки прерывания, соответствующей этой причине. [8]
Выполнение прерывающей программы начинается с запоминания в памяти содержимого тех общих регистров и регистров плавающей запятой, которые ею будут использованы. Далее выполняется собственно прерывающая программа, которая начинается с анализа кода прерывания и определения конкретной причины прерывания и инициирования подпрограммы отработки прерывания, соответствующей этой причине. [9]
![]() |
Схема прерывания. [10] |
Каждой прерывающей программе соответствует своя маска. Вызов маски из памяти и ее засылка в JRG3IJP производится в начале выполнения программы. Маска может формироваться программным путем в процессе выполнения самой программы и свидетельствовать, например, о получении результатов, готовых к выдаче. Сигналы прерывания / 7, ( рис. 328) получают с помощью элементов И при наличии причины прерывания и отсутствии запрета на прерывание по данной причине. Для выборки одного из нескольких появившихся одновременно сигналов П1 имеется приоритетная схема прерывания ПСПР. Сигнал с г-го выхода ПСПР должен сформировать команду безусловного перехода БП к программе-диспетчеру. [11]
Поэтому каждая прерывающая программа должна быть составлена так, чтобы она могла работать независимо от других. Для этого следует также избегать непосредственных связей между программами. Две и более программы могут работать с одними и теми же файлами данных, но следует избегать возможности появления взаимного влияния между различными программами, изменяющими один и тот же файл. [12]
Начальный адрес прерывающей программы запоминается в специальных ячейках, находящихся за пределами программы. [13]
![]() |
Пример содержимого стека. [14] |
После окончания прерывающей программы осуществляется возврат во вторую подпрограмму, а из нее-в первую подпрограмму. В приведенном примере обе команды PSH необходимо затем дополнить соответствующими командами PUL, которые обеспечат возврат в основную программу. [15]