"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора ;---маскирование 6-го бита регистра маски прерываний
MOV AL,01000000B ;маскируем бит 6 OUT 21H,AL ;посылаем в регистр маски прерываний . MOV AL,0 OUT 21H,AL ;очищаем IMR в конце программы .h3 1.2. Написание собственного прерывания. ------------------------------------------- Имеется несколько причин для написания собственного прерыва- ния. Во-первых, большинство из готовых прерываний, обеспечиваемых операционной системой, ничто иное, как обычные процедуры, доступ- ные для всех программ, и Вы можете пожелать добавить свое в эту библиотеку. Например, многие Ваши программы могут использовать процедуру, выводящую строки на экран вертикально. Вместо того, чтобы включать ее в каждую программу в качестве процедуры Вы можете установить ее как прерывание, написав программу, которая останется резидентной в памяти после завершения [1.3.4]. Тогда Вы можете использовать INT 80H вместо WRITE_VERTICALLY (имейте вви- ду, что вызов прерывания несколько медленней, чем вызов процеду- ры). Второй причиной написания прерывания может быть использование какого-либо отдельного аппаратного прерывания. Это прерывание В некоторых случаях BIOS инициализирует вектор этого прерывания так, что он указывает на процедуру, которая вообще ничего не делает (она содержит один оператор IRET). Вы можете написать свою процедуру и изменить вектор прерываний, чтобы он указывал на нее. Тогда при возникновении аппаратного прерывания будет выполняться Ваша процедура. Одна из таких процедур это прерывание времени суток [2.1.0], которое автоматически вызывается 18.2 раза в се- кунду. Обычно это прерывание только обновляет показание часов, но Вы можете добавить к нему любой код, который Вы пожелаете. Если Ваш код проверяет показания часов и вступает в игру в определен- ные моменты времени, то возможны операции в реальном времени. Другие возможности - это написание процедур обработки Ctrl-Break [3.2.8], PrtSC [3.2.9] и возникновения ошибочных ситуаций [7.2.5]. Прерывания принтера [6.3.1] и коммуникационные [7.1.8] позволяют компьютеру быстро переключаться между операциями вво- да/вывода и другой обработкой. Наконец, Вы можете захотеть написать прерывание, которое пол- ностью заменит одну из процедур операционной системы, приспособ- ленное к Вашим программным нуждам. В [1.2.4] показано как напи- сать прерывание внутри прерывания, которое позволяет Вам модифи- цировать существующие процедуры. Средний уровень. |
|
|