Как сказано в главе 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 рассматривалось еще одно устройство, которое использовалось для определения текущего времени и даты, — часы реального времени.