Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_з_1.doc
Скачиваний:
15
Добавлен:
01.03.2025
Размер:
2.57 Mб
Скачать

6.4.1. Программные прерывания

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

• отображение символов и строк;

• чтение символов и строк с клавиатуры;

• отображение текста в цвете;

• открытие и закрытие файлов;

• чтение данных из файлов;

• запись данных в файлы;

• получение и установка системного времени и даты.

Команда int

Данная команда вызывает процедуру обработки прерывания, помещая перед этим в стек состояние регистра флагов центрального процессора. Перед выполнением команды INT в регистры нужно загрузить значения соответствующих параметров. В самом про­стейшем случае в регистр АН нужно загрузить число, соответствующее номеру вызывае­мой процедуры.

В зависимости от типа вызываемой процедуры, в другие регистры нужно загрузить требуемые параметры. Синтаксис команды INT следующий: INT номер, где вместо номера нужно подставить целое число в диапазоне 00- FFh.

6.4.2. Обработка прерываний

При выполнении команды INT процессор использует таблицу векторов прерываний. Она размешается в первых 1024 байтах оперативной памяти (см. далее раздел 9.1 «Организация памяти»). Каждый элемент этой таблицы является 32-разрядным указателем, заданным в форме "сегмент-смешение", и определяет адрес начала процедуры обработки прерывания. Содержимое таблицы векторов прерываний зависит от конкретной компьютерной системы. На рис. 7.10. показана последовательность действий, выполняемая центральным процессором при вы­зове команды INT.

Рис. 6.10. Процесс обработки прерывания

6.4.3 Таблица векторов прерываний

Основная особенность обработки прерываний в систе­ме MS DOS, благодаря которой достигается высочайшая гибкость в работе программ, за­ключается в использовании специальной таблицы векторов прерываний. Небольшой фрагмент таблицы векторов прерываний приведен в табл.6.1.

Пример таблицы векторов прерываний Таблица 6.1.

Номер прерывания

Смещение

Векторы прерываний

00h-03h

0000h

02C1:5186 0070:0C67 0DAD:2C1B 0070:0C67

04h-07h

0010h

0070:0C67 F000:FF54 F000:837B F000:837B

08h-0Bh

0020h

0D70:022C 0DAD:2BAD 0070:0325 0070:039F

0Ch-0Fh

0030h

0070:0419 0070:0493 0070:050D 0070:0C67

10h-13h

0040h

C000:0CD7 F000:F84D F000:F841 0070:237D

Конкретные значения векторов прерываний зависят от модели ПК, его версии BIOS и MS DOS. Каждому номеру прерывания (напомним, что их всего 256) соответствует свой вектор. Например, в табл. 6.1 прерыванию INT 00h (деление на ноль) соответствует век­тор прерывания 02С1: 5186h. Чтобы вычислить смешение вектора прерывания относи­тельно начала таблицы, нужно номер прерывания умножить на 4. Например, смешение вектора прерывания INT 09h равно 0024h, поскольку 9 х 4 = 36 в десятичной системе счисления, или 24h - в шестнадцатеричной.

Процесс обработки прерывания включает перечисленные ниже четыре этапа: (см. Рис. 6.10.).

1. Номер, указанный после кода команды int. определяет, какой из элементов таб­лицы векторов прерываний должен использовать центральный процессор для оп­ределения адреса обработчика прерывания.

2. Процессор помешает в стек значение регистра флагов flags, запрещает генера­цию аппаратных прерываний и выполняет дальний вызов процедуры, адрес кото­рой указан в выбранном элементе таблицы векторов прерываний (в нашем приме­ре это F000h: F065h).

3. Начинает выполняться процедура обработки прерывания, расположенная по ад­ресу F000h: F065h, в конце которой располагается команда IRET.

4. При выполнении команды IRET (Interrupt Return, или возврат из прерывания) пре­рванная программа возобновляет свою работу сразу после команды INT 10h.