Процедуры пользователя
Процедуры пользователя
Существуют некоторые системные функции, которые требуют
непосредственного вмешательства пользовательской программы. Для
этого предназначены два прерывания. Первое, с вектором 1BH -
прекращение выполнения программы с по команде с клавиатуры. Чтобы
прервать выполняемую программу, пользователь системы нажимает
клавиши CTL-BREAK. В обычных случаях это возвращает управление в
текущую программную систему - DOS или Бейсик. Если пишется
программа, которая самостоятельно должна обрабатывать подобное
вмешательство пользователя, надо постоянно проверять, не нажал ли
пользователь соответствующие клавиши на клавиатуре. Или можно
использовать прерывание по отпусканию. Программа обслуживания
клавиатуры BIOS всякий раз, когда возникает нажатие клавиши
CTL-BREAK, дает програмное прерывани 1BH. Обычно это прерывание
указывает на возврат - команду IRET - так что ничего не происходит.
Если мы хотим сразу знать о нажатии клавиши CTL-BREAK, тогда нужно
сделать так, чтобы прерывание 1BH указывало на специальную
подпрограмму нашей программы. Эта подпрограмма сразу узнает о том,
что пользователь захотел выйти из программы и сможет предпринять
некоторые действия.
Аналогично, можно написать программу, которой нужно
периодическое прерывание. Например, игровая программа должна
постоянно знать положение клавиши управления игрой. BIOS выдает
прерывание 1CH всякий раз, когда срабатывает таймер. Как мы уже
видели, это случается примерно 18.2 раз в секунду, или раз в 55
миллисекунд. Можно написать программу, которая проверяет положение
клавиш управления игрой каждый восемнадцатый раз возникновения
прерывания, позволяя тем самым корректировать информацию об их
положении примерно раз в секунду. Этот метод дает нам возможность
периодического входа в заданную подпрограмму.