Временная диаграмма
Программно управляемый ввод/вывод
Операции ввода/вывода
Передача параметров
Использование стеков
Использование стеков снимает проблему вложенных ПП. Для этого в систему команд вводится:
- Команда перехода к ПП:
ПП | D |
Алгоритм:
1. ((УК)) → РК
2. (УК) + 1 → УК
3. Дешифровка коп
4. (УК) → -(Sp)
5. D → УК
6. Переход к пункту 1
- Команда возврата:
БП | Sp |
Алгоритм:
1. ((УК)) → РК
2. (УК) + 1 → УК
3. Дешифровка коп
4. (Sp) + → УК
5. Переход к пункту 1
При использовании стека для связи с ПП происходит два обращения к памяти: команда возврата так же обращается к памяти два раза. Это не самый экономный, но самый простой и часто используемый прием.
Самый простой способ передачи параметров главной программы к ПП – использование стандартных входных и выходных ячеек, или регистров. Главная программа должна перед каждым обращением к ПП засылать нужный аргумент в регистр, а после возврата использовать результат работы, находящийся в другом стандартном регистре.
|
|
Схема передачи:
Фрагмент главной | |
(….)х(…)→R2 | |
А | Переход к ПП |
А+1 | (R2)х(…)→ |
ПП |
(R1)x(…)… |
….. |
(….)x(…)→R2 |
Возврат |
Есть три технологии выполнения операции:
- Программно управляемый ввод/вывод
- Ввод/вывод по прерыванию
- Прямой доступ в память
Взаимодействие программ с периферийными устройствами происходит по схеме:
1. Команды программы выдают адрес устройства и вид работ
2. Следующая команда требует записать слово из ячейки памяти
3. Контроллер принимает слово из памяти в свой регистр данных, признак готовности -0- “занято”. Затем передает слово в периферийное устройство, по окончанию в регистре -1
4. Все время работы контроллера программа выполняет цикл ожидания, затем продолжение работы
Взаимодействие ЦП с ПУ(принтер)
ОМТ М |
R(сост) → R1 |
(R1) = 1? |
((R0)) → M |
R(сост) → R1 |
(R1) = 1? |
Нет |
Цикл ожидания |
Да |
((R0)) → M |
0 → Rсост |
Вывод символа на печать |
1 → Rсост |
Один символ |
Работа устройств вывода: |
t |
t4 |
t3 |
t2 |
t1 |
t0 |
ЦП |
Контроллер |
t0 – t1 и t3 - t4 – ЦП выполняет цикл ожидания
t2 – t3 – передача символа на принтер
Достоинства программы управления ввода/вывода – его простота
При программном управлении во время работы контроллера ЦП не может работать, а должен отслеживать сигнал готовности в регистре состояния. Механизм прерываний изменяет ситуацию. При работе ЦП имеют место ситуации, когда выполнение вычисления невозможно. В таких случаях следует снять выполнение программы и запустить новую, предварительно зафиксировав обстоятельства, в которых произошло прерывание. Каждый тип прерывания обрабатывается по своему с помощью специальной программы “обработки прерываний”. Типы прерываний и соответствующей обработки пронумерованы и образуют библиотеку ПП. Каталог библиотеки называют таблицей векторов прерываний. Сам вектор – последовательность нескольких байтов. Вектор прерывания с номером М хранится в ячейке a[t] + (M - 1)xN, где Ат - адрес начала таблицы, N – число бай адреса вектора прерываний, М – номер вектора прерываний. В главной программе нет обращения к обработчику. Прерывание возникает внезапно, реализуется последовательность событий:
|
|
- Главная программа вызывает прерывание
- ЦП сохраняет указатель команд и регистр признаков, устанавливая новые значения УК. Обработчик выполняет работу прерывания и после ее окончания восстанавливает старые значения регистров и вызывает выход из прерывания
- Выход из прерывания
-ЦП восстанавливает значение УК и регистра признаков
- Главная программа продолжает работу
Большинство операций ввода/вывода носят групповой характер, т.е передаются группы данных. Удобно организовывать циклическую передачу данных с помощью обработчика прерываний. По окончанию работы контроллер выдает сигнал прерывания ЦП вместо ожидания конца работы.
//рисунок
Механизм прерываний позволяет перенести часть работы из главной программы на обработчика.