Ранее мы имели дело с программами, в которых данные oпределялись в операндах команд (непосредственные данные) или инициализировались в конкретных полях программы. Число практических применений таких программ в действительности мало. Большинcтво программ требуют ввода данных с клавиатуры, диска или модема и обеспечивают вывод данных в удобном формате на экран, принтер или диск. Данные, предназначенные для вывода на экран и ввода с клавиатуры, имеют ASCII формат.
Для выполнения ввода и вывода используется команда INT (прерывание).
Существуют различные требования для указания системе какое действие (ввод или вывод) и на каком устройстве необходимо выполнить. Все необходимые экранные и клавиатурные операции можно выполнить используя команду INT 10H, которая передает управление непосредственно в BIOS. Для выполнения некоторых более сложных операций существует прерывание более высокого уровня INT 21H, которое сначала передает управление в DOS. Например, при вводе с клавиатуры может потребоваться подсчет введенных символов, проверку на максимальное число символов и проверку на символ Enter. Преpывание DOS INT 21H выполняет многие из этих дополнительных вычислений и затем автоматически передает управление в BIOS.
Команда INT прерывает обработку программы, передает управление в DOS или BIOS для определенного действия и затем возвращает управление в прерванную программу для продолжения обработки. Наиболее часто прерывание используется для выполнения операций ввода или вывода.
Для выхода из программы на обработку прерывания и для последующего возврата команда INT выполняет следующие действия:
· уменьшает указатель стека на 2 и заносит в вершину стека содержимое флагового регистра;
· очищает флаги TF и IF;
· уменьшает указатель стека на 2 и заносит содержимое регистра CS в стек;
· уменьшает указатель стека на 2 и заносит в стек значение командного указателя;
· обеспечивает выполнение необходимых действий;
· восстанавливает из стека значение регистра и возвращает управление в прерванную программу на команду, следующую после INT.
Этот процесс выполняется полностью автоматически. Необходимо лишь определить сегмент стека достаточно большим для записи в него значений регистров.