Меню сайта

Урок 153. Процедуры пользователя

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

— — — — — Аналогично, можно написать программу,которой нужно
— — — периодическое прерывание. Например,игровая программа должна
— — — постоянно знать положение клавишиуправления игрой. BIOS выдает
— — — прерывание 1CH всякий раз, когдасрабатывает таймер. Как мы уже
— — — видели, это случается примерно 18.2 раз всекунду, или раз в 55
— — — миллисекунд. Можно написать программу,которая проверяет положение
— — — клавиш управления игрой каждыйвосемнадцатый раз возникновения
— — — прерывания, позволяя тем самымкорректировать информацию об их
— — — положении примерно раз в секунду. Этотметод дает нам возможность
— — — периодического входа в заданнуюподпрограмму.

Категория: Программирование на Ассемблере | Дата: 04.03.13

Меню раздела
Блок