Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OSP / ОСП_2011 / Лабработа7 / Прерывания.doc
Скачиваний:
27
Добавлен:
11.04.2015
Размер:
124.42 Кб
Скачать
  1. Прерывания

    1. Команды прерывания

Различают два вида прерываний – аппаратные прерывания и программные прерывания. Аппаратное прерывание – это сигнал от любого устройства системы для процессора, который по этому сигналу должен обслужить данное устройство. Программное прерывание создается программами BIOS или DOS для вызова сервисных подпрограмм. Программное прерывание вырабатывается специальной микросхемой – контроллером прерываний, который посылает сигнал процессору на приостановку выполнения текущей программы и переход к выполнению программы прерывания.

Команды прерывания позволяют вызывать процедуры обслуживания прерываний из программ так же как это сделало бы устройство. Программные прерывания имитируют действие аппаратных прерываний.

INT (тип прерывания)

Команда INT (прерывание) инициирует выполнение процедуры обработки прерывания, определенного в операнде "тип прерывания". Эта команда сохраняет в стеке регистр флагов, очищает флаги TF и IF для запрещения пошагового выполнения и маскируемых прерываний. Флаги сохраняются в том же формате, что и в команде PUSHF. Затем в стеке сохраняется текущее содержимое регистра сегмента кода CS, вычисляется адрес вектора прерывания путем умножения "типа прерывания" на четыре, и второе слово этого вектора помещается в регистр сегмента кода CS. Далее в стеке сохраняется текущее содержимое счетчика команд IP, и в этот регистр записывается первое слово вычисленного вектора прерывания.

Рисунок 1 Вызов обработчика прерывания

INTO

Команда INTO (прерывание при переполнении) генерирует программное прерывание, если установлен флаг переполнения (OF), в противном случае управление передается следующей команде. Вектор прерывания INTO расположен по адресу 10h. Действие этой команды аналогично действию команды INT.

IRET

Команда IRET (возврат из прерывания) возвращает управление в точку, откуда прерывание было вызвано, заполняя из стека регистры IP, CS и регистр флагов. Команда IRET используется для выхода из процедур обработки как программных, так и аппаратных прерываний.

При написании программ для 16-разрядного режима можно использовать прерывание int21h, предназначенное для вызова функцийDOS. Существует около 90 различных функций. Номер функции предварительно помещается в регистрAH. Каждая функция использует входные параметры, передающиеся через регистры, которые должны быть проинициализированы перед вызовом прерыванияint21h. Рассмотрим несколько групп функцийDOS: функции ввода, функции вывода, функции даты и времени.

    1. Функции вывода

Рассмотрим некоторые функции DOS, которые используются для вывода символьной информации на экран. Далее указывается номер функции и описание функции с примером использования. СредстваDOSпозволяют выводить на экран только черно-белый текст, возможности позиционирования текста на экране ограничиваются использованием символов возврата каретки (0Dh) и перевода строки (0Ah).

Вывод символа (02h)

Функция посылает символ на стандартное устройство вывода. В регистр DLпомещается выводимый символ. РегистрALмодифицируется системойDOS. Если в процессе вывода символа на экран с клавиатуры поступает код <CTRL>-C, срабатывает стандартная процедура обработки этого прерывания и вывод прекращается (как и программа в целом)

Пример.

mov AH, 2h ;Выбор функции 2

mov DL,’*’ ;Отображаемый символ

Соседние файлы в папке Лабработа7