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

режимом, как для канала 0 при синхронизации, так и для канала 2
для синхронизации или генерации звука. В этом режиме, как только
регистр задвижки получает число, он немедленно загружает копию в
регистр счетчика. Когда значение в счетчике достигает нуля ре-
гистр задвижки мгновенно перезагружает счетчик и т.д. В течение
половины отсчета выходная линия включена, а в течение половины -
выключена. В результате получаются прямоугольные волны, которые
одинаково пригодны как для генерации звука, так и для подсчета.
8-битный командный регистр управляет способом загрузки чисел в
канал. Адрес порта для этого регистра равен 43H. Командному ре-
гистру передается байт, который говорит какой канал программиро-
вать, в каком режиме, а также один или оба байта регистра задвиж-
ки должны быть переданы. Он показывает также будет ли число в
двоичной или BCD (двоичнокодированной десятичной) форме. Значение
битов этого регистра таково:

бит 0 если 0, двоичные данные, иначе BCD
3-1 номер режима, 0 - 5 (000 - 101)
5-4 тип операции:
00 = передать значение счетчика в задвижку
01 = читать/писать только старший байт
10 = читать/писать только младший байт
11 = читать/писать старший байт, потом младший
7-6 номер программируемого канала, 0 - 2 (00 -10)

Короче говоря, для программирования микросхемы 8253 надо вы-
полнить три основных шага. После того как третий шаг завершен,
запрограммированный канал немедленно начинает функционировать по
новой программе.

1. Послать в командный регистр (43H) байт, представляющий
цепочку битов, которые выбирают канал, статус чтения/записи,
режим операции и форму представления чисел.

2. Для канала 2 надо разрешить сигнал от часов, установив в 1
бит 0 порта с адресом 61H. (Когда бит 1 этого регистра установлен
в 1, то канал 2 управляет динамиком. Сбросьте его в 0 для опера-
ций синхронизации.)

3. Вычислите значение счетчика от 0 до 65535, поместите его в
AX, и пошлите сначала младший, а затем старший байт в регистр
ввода/вывода канала (40H - 42H).

Каналы микросхемы 8253 работают всегда. По этой причине прог-
раммы всегда должны восстанавливать начальные установки регистров
8253 перед завершением. В частности, если при завершении програм-
мы генерируется звук, то он будет продолжаться даже после того,
как MS DOS получит управление и загрузит другую программу. Имейте
это ввиду при написании процедуры выхода по Ctrl-Break [3.2.8].