"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора

переменной, находящейся в области данных BIOS. Этот процесс пока-
зан на рис. 2-1. Это накопление обычно называется подсчетом вре-
мени суток. 18.2 раза в секунду выход канала 0 обрабатывается
аппаратным прерыванием (прерыванием таймера), которое ненадолго
останавливает процессор и увеличивает счетчик времени суток.
Число 0 соответствует полночи 12:00; когда счетчик достигает
значения эквивалентного 24 часам, он сбрасывается на ноль. Другое
время в течение суток легко определяется делением показателя
счетчика на 18.2 для каждой секунды. Счетчик времени суток ис-
пользуется в большинстве операций, связанных со временем.

.h3 2.1.1 Программирование микросхемы таймера 8253/8254.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Каждый из трех каналов микросхемы таймера 8253 (8254 для AT)
состоит из трех регистров. Доступ к каждой группе из трех регист-
ров осуществляется через один порт; номера портов от 40H до 42H
соответствуют каналам 0 - 2. Порт связан с 8-битным регистром
ввода/вывода, который посылает и принимает данные для этого кана-
ла. Когда канал запрограммирован, то через этот порт посылается
двухбайтное значение, младший байт сначала. Это число передается
в 16-битный регистр задвижки (latch register), который хранит это
число и из которого копия помещается в 16-битный регистр счетчи-
ка. В регистре счетчика число уменьшается на единицу каждый раз,
когда импульс от системных часов пропускается через канал. Когда
значение этого числа достигает нуля, то канал выдает выходной
сигнал и затем новая копия содержимого регистра задвижки передви-
гается в регистр счетчика, после чего процесс повторяется. Чем
меньше число в регистре счетчика, тем быстрее ритм. Все три кана-
ла всегда активны: процессор не включает и не выключает их. Теку-
щее значение любого из регистров счетчика может быть прочитано в
любой момент времени, не влияя на счет.
Каждый канал имеет две входные и одну выходную линии. Выходная
линия выводит импульсы, возникающие в результате подсчета. Назна-
чение этих сигналов варьируется в зависимости от типа IBM PC:

Канал 0 используется системными часами времени суток. Он уста-
навливается BIOS при старте таким образом, что выдает импульсы
приблизительно 18.2 раза в секунду. 4-байтный счетчик этих им-
пульсов хранится в памяти по адресу 0040:006C (младший байт хра-
нится первым). Каждый импульс инициирует прерывание таймера (но-
мер 8) и именно это прерывание увеличивает показание счетчика.
Это аппаратное прерывание, поэтому оно обрабатывается всегда,
независимо от того, чем занят процессор, если только разрешены
аппаратные прерывания (см. обсуждение в [1.2.2]). Выходная линия
используется также для синхронизации некоторых дисковых операций,
поэтому если Вы изменили ее значение, то Вам необходимо восстано-
вить первоначальное значение перед обращением к диску.

Канал 1 управляет обновлением памяти на всех машинах кроме