Рассмотрим вариант программно-управляемого обмена между памятью и внешним устройством в МПС на базе МП i8080. Пусть необходимо передать массив данных длиной L, начиная с адреса ADR на ВУ с адресом AIO. Положим, что начальный адрес массива загружен в регистровую пару HL, а длина массива - в регистр C. Тогда фрагмент программы обмена может иметь следующий вид:
Табл. 8.1
Метка
Мнемокод
Комментарий
Количество
машинных циклов
LM:
MOV A,M
Чтение байта в Акк.
OUT AIO
Выдача байта на ВУ
INX H
Модификация адреса
DCR C
Модификация счетчика
JNZ LM
Переход, если массив не исчерпан
Всего: 10
Таким образом, для того, чтобы в рамках процедуры копирования массива данных из памяти в ВУ переслать один байт данных потребуется десять машинных циклов (МЦ). Процессоры с более совершенной системой команд могут использовать для этой цели меньшее число МЦ, но все равно их будет более одного.
Управляя обменом, микропроцессор "ведет" два счетчика - адресов массива и количества переданных байт и формирует сигналы управления на магистраль. Если снабдить ВУ аппаратными счетчиками и схемой формирования управляющих сигналов (т.н. "канал прямого доступа в память"), то передачу одного байта (слова) можно осуществить за один МЦ без участия процессора. Необходимо лишь на время передачи данных под управлением канала ПДП блокировать работу процессора, отключив его от системной шины. Для этого служит вход захвата шины HOLD. Если подать на него высокий уровень, то МП по окончанию текущего МЦ безусловно перейдет в режим ожидания, переведя все свои выходные линии, кроме HLDA и WAIT, в высокоимпедансное состояние, а выходы HLDA и WAIT - в состояние лог. "1". Выходной сигнал HLDA используется для отключения МП от системной шины - перевода шинных формирователей, включенных между локальной и системной шиной, в высокоимпедансное состояние.
Если в МПС используется несколько ВУ, снабженных каналом ПДП, то целесообразно использовать специальный контроллер ПДП, который обеспечивает программирование каналов ПДП, подключение их к системной шине и дисциплину обслуживания.