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


         

то как она сможет сообщить


    то как она сможет сообщить программе, что это произошло во время
    печати? В некоторых случаях к этому моменту программа передававшая
    даные для печати уже завершила свою работу. Наилучший выход может
    состоять в проверке ошибок при каждой пересылке символа на принтер
    процедурой работы с таймером. При обнаружении ошибки процедура
    PRINT_HANDLER должна выдать сообщение об ошибке, что далее все
    программы будут производить вывод на печать через прерывание INT
    17H. Возможно, это не идеальный вариант, но, вероятно, лучший.
 
      Прежде чем закончить рассмотрение примера, следует обратить
    внимание еще на одну проблему. Существуют и другие процедуры,
    изменяющие частоту прерываний от таймера. BASICA - расширенная
    версия интерпретатора Бейсика, для ускорения таймера используется
    прием, во многом аналогичный приведенному. При вызове программы
    BASICA после установки буферизованной печати, процедура
    TIMER_HANDLER получает прерывания уже не с той частотой, которая
    предполагается. Поскольку процедура TIMER_HANDLER ограничивает
    передачу управления прерыванием от таймера процедуре BIOS, текущее
    время замедлится в 256 раз. BASICA осуществляет также инициализацию
    устройства печати, что, как мы уже видели, мешает выводу на печать.
    Это означает, что программа буферизации печати будет работать не
    для всех приложений. Однако она иллюстрирует использование
    прерывания INT 27H для создания постоянной системной функции.
    Приведенный пример иллюстрирует также метод переопределения
    векторов BIOS для подцепления новой функции к уже имеющимся
    программам.

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