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


Возврат программы в DOS с сохранением ее резидентности - часть 14


    максимальной скоростью.
 
      Ускорение таймера в 256 раз было выбрано потому, что это было
    просто сделать. Однако если брать в расчет производительность, то
    лучше было бы ускорить работу таймера в 5 раз, поскольку на
    обработку каждого прерывания от таймера тратится по меньшей мере 10
    микросекунд, и даже больше, если в буфере печати есть символы.
    Время, затраченное на обработку прерываний, идет в ущерб выполнению
    системой других заданий, например ассемблирования. При такой
    частоте прерываний от таймера, становится заметным замедление
    работы. Для оптимизации производительности следует ускорять таймер
    менее, чем в 256 раз.
 
      Что же происходит в процедуре работы с таймером, когда в буфере
    есть символы, предназначенные для печати? Программа считывает порт
    состояния, чтобы определить, готов ли принтер к приему символа.
    Поскольку в процедуре используется базовый адрес из области данных
    BIOS, то наша подпрограмма будет работать и с автономным адаптером
    устройства печати, и с портом адаптера монохромного дисплея. Если
    устройство печати не готово, процедура возвращает управление на
    метку TIMER_RETURN, где в случае необходимости поддерживаются
    стандартные функции таймера. Процедура вывода на печать не ждет,
    когда устройство печати освободится, если оно занято. Мы знаем, что
    прерывание от таймера очень скоро повторится, тогда мы и повторим
    попытку вывода. Ожидание готовности устройства печати здесь
    связывало бы бы всю систему. Результат был бы таким же, как и в
    случае отсутствия буферизации печати.
 
      Если принтер готов, программа извлекает символ из буфера и
    передает его на принтер. И в данном случае программа вновь не
    делает всего, что следовало бы. Подпрограмма, входящая в BIOS,
    делает проверку на ситуацию ошибки при передаче каждого символа. То
    же самое следовало бы делать и в нашей процедуре. Но что же
    произойдет в случае сбоя? Если процедура вывода обнаружила ошибку,



Начало  Назад  Вперед



Книжный магазин