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



         

Системный сервис - часть 2


    число квантов таймера в часе. Чтобы определить минуты, разделите
    остаток от предыдущего деления на 1092, количество квантов в
    минуте, и так далее.
 
      Если точность преобразования значения времени не очень критична
    для вас, можно воспользоваться более простым методом. Так как
    количество квантов, соответствующее 24 часам не помещается в одно
    слово, значение таймера представляется трехбайтовым целым числом.
    Значение старшего байта отличается не более, чем на 1% от времени в
    часах. Младшее слово можно разделить на 1092, чтобы определить
    число минут, а деление остатка на 18 дает число секунд.
 
      Функция времени дня использует аппаратное прерывание,
    прерывание по кванту таймера. Это прерывание имеет уровень 0 в
    контроллере прерываний 8259, и имеет вектор прерывания 8 в
    микропроцессоре 8088. Эта программа получает управление каждые 55
    миллисекунд. Основное назначение этой программы - увеличение
    счетчика квантов таймера программы времени дня. Если программа
    выключит прерывания на значительный промежуток времени, то весьма
    вероятно, что время суток перестанет быть правильным.
 
      Прерывание от таймера используется также программой
    обслуживания дисковода. Двигатели дисковода включены не постоянно;
    BIOS включает двигатели только на время доступа к дискете. Но BIOS
    не выключает двигатель сразу же после выполнения операции. Есть
    некоторый интервал времени между включением двигателя и тем
    моментом, когда он разгонится и будет вращаться достаточно быстро,
    для того, чтобы можно было читать данные. Если программа обращается
    к дисководу почти сразу после предыдущего обращения, лучше оставить
    двигатель включенным, а не выключать и включать его. Программа
    обработки аппаратного прерывания от таймера учитывает это.
    Обработчик дискового прерывания загружает число в переменную,
    которая называется MOTOR_COUNT, когда завершается операция обмена с
    дискеттой. Прерывание от таймера уменьшает значение этого счетчика.



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