ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

В то время как большинство обработчиков прерываний просты, предназначены для обслуживания определенных аппаратных средств и выполняются очень быстро, монитор является очень сложной программой, которая не только контролирует выполнение приложения, но также осуществляет интерфейс с пользователем. Часто требуется осуществить интерфейс с пассивным терминалом, это означает, что монитор должен уметь проводить анализ команд, вводимых пользователем с таких терминалов. Управление выполнением приложения главным образом осуществляется путем манипуляции с содержимым программного счетчика для прикладной программы, которое сохраняется в стеке при запуске монитора. Эти манипуляции сводятся к контролю и обновлению адреса возврата в стеке. Например, если требуется запустить программу с определенного адреса, то монитор загружает этот адрес в стек в качестве адреса возврата. Когда монитор будет готов к запуску программы, выполняется возврат из прерывания, который осуществляется путем извлечения требуемого адреса из стека и загрузки его в программный счетчик.

Для реализации точек останова и пошагового выполнения программ требуется модифицировать содержимое памяти, где хранится код прикладной программы. Во многих процессорах есть однобайтная команда для генерации программного прерывания. Например, в микропроцессорах семейства i86, которые используются в IBM PC, это команда программного прерывания «int 3» с кодом ОхСС. Для реализации точки останова эта команда помещается перед первым байтом следующей команды. Когда поступает команда программного прерывания, содержимое указателя стека декрементируется, адресуя ячейку, в которую загружается содержимое программного счетчика. Это содержимое восстанавливается после выполнения подпрограммы обслуживания прерывания. Пошаговое выполнение может быть реализовано аналогичным образом - путем передачи управления монитору после выполнения каждой команды. Но контроллеры прерываний некоторых процессоров имеют режимы работы, при которых автоматически генерируется прерывание после каждой команды, то есть реализуется пошаговый режим.

Go to Top