| Справочник программиста на персональном компьютере фирмы IBM | 114 |
частоту и помещает ее в канал 2. Затем длительность для этой ноты
помещается в счетчик цикла задержки, который использует счетчик
времени суток, а когда задержка кончается, то переходим к обра-
ботке следующей ноты. На рис. 2-5 показана работа этой процедуры.
;-в сегменте данных
BEAT DB 10,9,8,7,6,5,4,3,2 ;длительность нот
FREQUENCY DW 2280,2031,1809,1709 ;таблица частот
DW 1521,1353,1207,1139 ;
MELODY DB 1,2,3,4,5,6,7,8,0FFH ;номер частоты ноты
;-инициализация
PORT_B EQU 61H
COMMAND_REG EQU 43H
LATCH2 EQU 42H
IN AL,PORT_B ;получаем текущий статус
OR AL,00000011B ;разрешаем динамик и таймер
OUT PORT_B,AL ;заменяем байт
MOV SI,0 ;инициализируем указатель
MOV AL,0B6H ;установка для канала 2
OUT COMMAND_REG,AL ;посылаем в командный регистр
;-смотрим ноту, получаем ее частоту и помещаем в канал 2
NEXT_NOTE: LEA BX,MELODY ;берем смещение для мелодии
MOV AL,[BX][SI] ;берем код n-ной ноты строки
CMP AL,0FFH ;проверка на конец строки
JE NO_MORE ;если конец, то на выход
CBW ;переводим в слово
;получение частоты
MOV BX,OFFSET FREQUENCY ;смещение таблицы частот
Предыдущая страница 114 Следующая страница
205390974
|