Как сказано в главе 5.10.5, канал 2 системного таймера управляет динамиком компьютера — он генерирует прямоугольные импульсы с частотой, равной 1 193 180/начальное_значение_счетчика. При программировании динамика начальное значение счетчика таймера принято называть делителем частоты — считается, что динамик работает с частотой, равной 1 193 180/делитель герц. После программирования канала 2 таймера надо еще включить сам динамик — это делается путем установки бит 0 и 1 порта 61h в 1. Бит 0 фактически разрешает работу этого канала таймера, а бит 1 включает динамик.
; Процедура beep
; издает звук с частотой 261 Hz (нота "ми" средней октавы)
; длительностью 1/2 секунды на динамике
beep proc near
mov al,10110110b ; канал 2, режим 3
out 43h,al
mov al,0Dh ; младший байт делителя
; частоты 11D0h
out 42h,al
mov al,11h ; старший байт делителя частоты
out 42h,al
in al,61h ; текущее состояние
; порта 61h в AL
or al,00000011b ; установить биты 0 и 1 в 1
out 61h,al ; теперь динамик включен
mov cx,0007h ; старшее слово числа микросекунд паузы
mov dx,0A120h ; младшее слово числа микросекунд паузы
mov ah,86h ; функция 86h
int 15h ; пауза
in al,61h
and al,11111100b ; обнулить младшие два бита
out 61h,al ; теперь динамик выключен
ret
beep endp
В связи с повсеместным распространением звуковых плат обычный динамик PC теперь практически никем не используется или используется для выдачи сообщений об ошибках. Вернемся к звуку чуть позже, а пока вспомним, что в главе 4.7.1 рассматривалось еще одно устройство, которое использовалось для определения текущего времени и даты, — часы реального времени.