"Роберт Джордайн. Справочное пособие программиста - 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 управляет обновлением памяти на всех машинах кроме |
|
|