Прекъснете работата

Интерфейсът за програмиране на DOS и BIOS е организиран като извикване на рутинни процедури за прекъсване.

Прекъсването е индикация към процесора, че е настъпило събитие и трябва да бъде обработено, наречено отговор на прекъсване.

Прекъсванията се делят на външни за процесора, като например от часовника за реално време, и вътрешни, като деление на нула или препълване. Освен това всяко прекъсване може да бъде извикано с командата

INTn

къдетоnе номерът на прекъсването, обикновено се обозначава в шестнадесетичен запис (с буквата H в края на числото).

На IBM-съвместими компютри не всички вектори на прекъсване се споделят между събития и устройства. Неизползваните числа и са предназначени да се отнасят до подпрограми на ОС.

Тъй като няма много свободни прекъсвания, няколко подпрограми могат да бъдат извикани на един вектор. Номерът на подпрограмата, наречен функция или услуга за прекъсване, се предава като параметър, записан в регистъра AH. Например, най-често използваното прекъсванеDOS 21H има 87 услуги.

DOS процедурите имат по-високо ниво на обработка на информация и често допълнително използват прекъсвания на BIOS.

Основни DOS прекъсвания:

21H - общи DOS функции;

25Н - безусловно четене от диска;

26H - безусловен запис на диск.

Основни прекъсвания на BIOS:

12H - получаване на размера на основната памет;

13H - работа с дискове;

14H - работа със серийни портове;

15Н - различни услуги;

16H - работа с клавиатурата;

17H - работа с принтера;

19H - рестартирайте компютъра;

1AH - работа с часовник за реално време.

Понякога възниква ситуация, когато програмата трябвадефинирайте свои собствени алгоритми за реагиране на прекъсвания от външни устройства или операционната система, като отменяте стандартните отговори.

Процедурата, която ще обслужва прекъсването, трябва да има директива за прекъсване и строго фиксиран списък от параметри:

прекъсване ;

Допуска се липса или настройка на индивидуални параметри. Съдържанието на регистрите на процесора се предава на процедурата като параметри, така че те могат да бъдат променяни.

Действителното предефиниране на някои прекъсвания се извършва чрез извикване на процедурата на DOS модула:

SetIntVec (IntNo:byte; Vector:Pointer);

IntNo – номер на прекъсване за предефиниране;

GetIntVec (IntNo:byte; Var Vector:Pointer);

Програмите за обработка на прекъсвания са специфични, защото достъпът до тях не се осъществява от програмния сегмент, а от таблицата на прекъсванията. Следователно за тях е необходимо да се посочи далечно (междусегментно) извикване с директивата на компилатора.

Пример. Обработка на прекъсването, което възниква при натискане на клавишите Ctrl-Break.

което се случва, когато натиснете Ctrl-Break >