Assembler для начинающих


              

Интересно рассмотреть работу процедуры TIMER_HANDLER


 
      Интересно рассмотреть работу процедуры TIMER_HANDLER из
    приведенного примера. Инициализирующая процедура связывает эту
    подпрограмму с аппаратным прерыванием от таймера, поэтому на каждом
    цикле таймера она получает управление. Помимо пересылки кодов на
    принтер, эта процедура должна обеспечивать, через компенсацию
    ускоения таймера, выполнение его обычных функций, таких как
    ведение времени дня.
 
      Сначала процедура работы с таймером проверяет, имеются ли
    предназначенные для вывода на печать символы. Нет смысла пытаться
    переслать символы на принтер, если пересылать нечего. Если в буфере
    нет символов, процедура проходит на метку TIMER_RETURN. Этот
    фрагмент процедуры обслуживает ускорение таймера.
 
      Метка TIMER_RETURN указывает часть программы, обеспечивающую
    нормальное функционирование таймера. При каждом прерывании от
    таймера значение байта TIMER_COUNT увеличивается на единицу. Если
    этот байт не нулевой, то процедура выходит из прерывания после
    выдачи сигнала о завершении прерывания на контроллер прерываний.
    Если этот байт равен нулю, то выход из программы осуществляется
    посредством косвенного перехода по сохраненному вектору прерывания
    от таймера TIMER_VECTOR. При этом управление передается процедуре
    BIOS для определения текущего времени и выключения дисковода.
    Дублировать эти операции в нашей программе не требуется. Переход в
    BIOS происходит только один из 256 раз выполнения подпрограммы
    работы с таймером. Но поскольку скорость таймера была увеличена в
    256 раз, процедура реакции на прерывание от таймера базовой системы
    ввода-вывода по-прежнему будет получать управление 18,2 раза в
    секунду. Это означает, что текущее время будет поддерживаться
    правильно, и мотор дисковода будет выключен вовремя. Именно поэтому
    и было выбрано ускорение таймера в 256 раз, хотя и ускорения в 5
    раз было бы достаточно, чтобы обеспечить работу устройства печати с

Содержание  Назад  Вперед