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

OUT LATCH2,AL ;посылаем его

;---создание цмкла задержки
MOV AH,0 ;номер функции чтения счетчика
INT 1AH ;получаем значение счетчика
MOV BX,OFFSET BEAT ;смещение таблицы длин
MOV CL,[BX][SI] ;берем длину очередной ноты
MOV CH,0
MOV BX,DX ;берем младшее слово счетчика
ADD BX,CX ;определяем момент окончания
STILL_SOUND:
INT 1AH ;берем значение счетчика
CMP DX,BX ;сравниваем с окончанием
JNE STILL_SOUND ;неравны - продолжаем звук
INC SI ;переходим к следующей ноте
JMP NEXT_NOTE

;---завершение
NO_MORE:
IN AL,PORT_B ;получаем статус порта B
AND AL,0FCH ;выключаем динамик
OUT 61H,AL ;заменяем байт


.h3 2.2.6 Генерация строки тонов, одновременно с другими операциями.
--------------------------------------------------------------------

Хотя в Бейсике это делается очень просто, на самом деле это
нетривиальный трюк программирования в реальном времени. Для реше-
ния этой задачи нужно использовать генерацию звука через микрос-
хему 8253 [2.2.3], так как метод, использующий микросхему 8255
[2.2.2], занимает процессор. Соответственно, только строки чистых
музыкальных тонов могут производиться таким методом - всякого
рода звуковые эффекты при этом недоступны. Основная техника прог-
раммирования в реальном времени показана в [2.1.7]. Программы,
работающие в реальном времени, модифицируют прерывание таймера,
которое останавливает процессор 18.2 раз в секунду, чтобы изме-
нить показание счетчика времени суток. Расширение процедуры пре-
рывания сравнивает новое значение счетчика времени суток со зна-
чением, показывающим время завершения генерации тона, и когда это
значение достигнуто, прерывает звук, начинает генерацию другого
тона и устанавливает время его окончания.

Высокий уровень.

Генерация строки звуков одновременно с другими операциями
является одной из возможностей очень мощного оператора PLAY,
который детально обсуждался в [2.2.5]. Надо просто добавить в
начало управляющей строки MB. Это сокращение от Music Background
(фоновая музыка); для того чтобы заставить PLAY прекратить все