Данный режим характеризуется тем, что все действия по вводу-выводу реализуютсякомандами прикладной программы. Инициатива проведения операций ввода-вывода в этомспособе исходит от микропроцессора. Для большинства ПУ до выполнения операций ввода-вывода необходимо убедиться в их готовности, после чего непосредственно осуществляетсяобмен данными. Таким образом, ввод-вывод является асинхронным. Для определеннойкатегории ПУ (например, индикаторы на светодиодах) отсутствует необходимость проверкиготовности к операциям ввода-вывода, в этом случае в соответствующих местах программыиспользуются команды ввода IN или вывода OUT. Такая передача данных называетсясинхронным или безусловным вводом –выводом. Общее состояние ПУ в этом режиме ввода–вывода характеризуется флагомготовности READY, называемым также флажком готовности/занятости (READY/BUSY).Иногда состояния готовности и занятости идентифицируются отдельными флажкамиREADY и BUSY, входящими в слово состояния устройства. Интерпретация флажка READY в устройствах ввода и устройствах вывода различна.Для устройств ввода обычно принимается следующая интерпретация флажка READY ивыполняемых с ним операциям: - состояние READY=0 означает отсутствие входных данных в регистре ввода; - состояние READY=1 определяет наличие входных данных в регистре ввода; - подпрограмма инициализации сбрасывает флажок READY; - при загрузке входных данных ПУ в регистр ввода флажок READY автоматическиустанавливается; - при вводе данных (считывании) микропроцессором флажок READY сбрасывается. Для устройств вывода соответствующие состояния и действия имеют другой смысл: - состояние READY=0 означает недоступность регистра вывода для приема данныхот микропроцессора; - состояние READY=1 сигнализирует о доступности регистра вывода; - подпрограмма инициализации устанавливает флажок READY; - при выводе (записи) данных микропроцессором флажок READY сбрасывается; - при восприятии выходных данных из регистра вывода непосредственно в ПУфлажок READY автоматически устанавливается. Микропроцессор проверяет флажок готовности с помощью одной или несколькихкоманд. Если флажок установлен, инициируется собственно ввод или вывод одного илинескольких слов данных. Когда же флажок сброшен, микропроцессор выполняет цикл из 2-3команд с повторной проверкой флажка READY до тех пор, пока устройство не будет готовок операциям ввода-вывода. Данный цикл называется циклом ожидания и реализуется вразличных микропроцессорах по-разному. Основной недостаток программного ввода-вывода связан с непроизводительнымипотерями времени микропроцессора в циклах ожидания. Для некоторых ПУ основное времямикропроцессора приходиться на бесполезные циклы ожидания, в которых он не выполняеткакой-либо полезной работы. К достоинству программного ВВ относят простоту егореализации, не требующих дополнительных аппаратных средств.