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


Средний уровень.

Операционная система не предоставляет специальной функции для
генерации звука. Но Вы можете вызвать знакомый гудок просто пода-
вая код ASCII 7 на стандартное устройство вывода (т.е. терминал),
используя одну из функций DOS или BIOS. Код ASCII 7 интерпрети-
руется как управляющий символ "звонок" и он не рисуется на экра-
не. Проще всего использовать функцию 2 прерывания 21H:

MOV AH,2 ;функция вывода символа на экран
MOV DL,7 ;посылаем код ASCII 7
INT 21H ;динамик гудит

Низкий уровень.

Для простого гудка лучше всего подходит метод, основанный на
использовании микросхемы интерфейса с периферией 8255 [1.1.1].
Ниже приведен пример, который практически повторяет гудок, кото-
рый Вы слышите при старте системы.

;---гудок динамика
MOV DX,800 ;счетчик числа циклов
IN AL,61H ;читаем порт B 8255
AND AL,0FEH ;выключаем бит таймера 8253
NEXTCYCLE:
OR AL,2 ;включаем бит динамика
OUT 61H,AL ;посылаем байт в порт B
MOV CX,150H ;длительность первой половины
CYCLEUP:
LOOP CYCLEUP ;задержка пока сигнал высокий
AND AL,0FDH ;выключаем бит динамика
OUT 61H,AL ;посылаем байт в порт B
MOV CX,150H ;длительность второй половины
CYCLEDOWN:
LOOP CYCLEDOWN ;задержка пока сигнал низкий
DEC DX ;уменьшаем счетчик циклов
JNZ NEXTCYCLE ;повторяем цикл пока DX не 0


.h3 2.2.5 Генерация набора тонов.
--------------------------------

В этом подразделе показано как генерировать цепочку звуков,
когда компьютер ничем другим не занят; в следующем будет показано
как выполнить ту же задачу, когда компьютер занят другой работой.
Когда компьютер ничем другим не занят, то можно выводить мелодию
или производить специальные звуковые эффекты; когда же компьютер
занят другой работой, то нельзя производить звуковые эффекты.
Создание звуковых строк является одной из мощнейших возможнос-