Команда INT прерывает обработку программы, передает управление в DOS или BIOS для определенного действия и затем возвращает управление в прерванную программу для продолжения обработки. Наиболее часто прерывание используется для выполнения операций ввода или вывода.
Формат команды
INT тип_прерывания
Для выхода из программы на обработку прерывания и для последующего возврата команда INT выполняет следующие действия:
- уменьшает указатель стека на 2 и заносит в вершину стека содержимое флагового регистра;
- очищает флаги TF и IF;
- уменьшает указатель стека на 2 и заносит содержимое регистра CS в стек;
- уменьшает указатель стека на 2 и заносит в стек значение командного указателя;
- вычисляет адрес вектора прерывания, умножая тип_прерывания на 4;
- загружает второе слово вектора прерываний в регистр CS;
- загружает в IP первое слово вектора прерывания;
- обеспечивает выполнение необходимых действий;
- восстанавливает из стека значение регистра и возвращает управление в прерванную программу на команду, следующую после INT.
Этот процесс выполняется полностью автоматически. Необходимо лишь определить сегмент стека достаточно большим для записи в него значений регистров.
В данной главе рассмотрим два типа прерываний: команду BIOS INT 10H и команду DOS INT 21H для вывода на экран и ввода с клавиатуры. В последующих примерах в зависимости от требований используются как INT 10H так и INT 21H.