ВУЗ:
Составители:
91
beg1: call kbin ; Опрос клавиатуры
cmp al,'1' ; = '1' ?
jnz beg2 ; Нет
call ton1 ; Звук высоты 1
jmp beg1 ; Переход на начало цикла
beg2: cmp al,'2' ; = '2' ?
jnz beg3 ; Нет
call ton2 ; Звук высоты 2
jmp beg1 ; Переход на начало цикла
beg3: cmp al,'q' ; = 'q' ?
jnz beg1 ; Нет
int 20h ; Выход из программы
start endp ; Конец основной процедуры
ton2 proc near ; Процедура генерации звука 2
mov dx,duration ; Длительность
mov di,frequency2 ; Коэффициент деления 2
jmp ton0 ; Переход на универсальную процедуру
ton1 proc near ; Процедура генерации звука 1
mov dx,duration ; Длительность
mov di,frequency1 ; Коэффициент деления 2
; Универсальная процедура генерации
звука
; DX – длительность, DI – коэффиц. деления
ton0 proc near
cli ; Запрещение прерываний
; Включение динамика и таймера
in al,61h ; Чтение состояния системного порта В
or al,3 ; Разрешение звучания (биты 0 и 1)
out 61h,al ; Запись в системный порт В
; Программирование делителя частоты 2 канала
mov ax,di ; Делитель частоты
out 42h,al ; Мл.байт частоты
⇒ канал 2 таймера
xchg al,ah ; AH
⇔ AL
out 42h,al ; Ст.байт частоты
⇒ канал 2 таймера
; Формирование задержки
mov cx,dx ; Счетчик цикла задержки
ton01: push cx ; Команды, используемые только для
pop cx ; увеличения длит. цикла задержки
loop ton01 ; Задержка
; Выключение звука
in al,61h ; Чтение состояния системного порта В
and al,0fch ; Запрещение звучания (биты 0 и 1)
out 61h,al ; Запись в системный порт В
sti ; Разрешение прерываний
ret ; Выход из процедуры
ton0 endp ; Конец универсальной процедуры
ton1 endp ; Конец процедуры генерации звука
1
91
beg1: call kbin ; Опрос клавиатуры
cmp al,'1' ; = '1' ?
jnz beg2 ; Нет
call ton1 ; Звук высоты 1
jmp beg1 ; Переход на начало цикла
beg2: cmp al,'2' ; = '2' ?
jnz beg3 ; Нет
call ton2 ; Звук высоты 2
jmp beg1 ; Переход на начало цикла
beg3: cmp al,'q' ; = 'q' ?
jnz beg1 ; Нет
int 20h ; Выход из программы
start endp ; Конец основной процедуры
ton2 proc near ; Процедура генерации звука 2
mov dx,duration ; Длительность
mov di,frequency2 ; Коэффициент деления 2
jmp ton0 ; Переход на универсальную процедуру
ton1 proc near ; Процедура генерации звука 1
mov dx,duration ; Длительность
mov di,frequency1 ; Коэффициент деления 2
; Универсальная процедура генерации звука
; DX – длительность, DI – коэффиц. деления
ton0 proc near
cli ; Запрещение прерываний
; Включение динамика и таймера
in al,61h ; Чтение состояния системного порта В
or al,3 ; Разрешение звучания (биты 0 и 1)
out 61h,al ; Запись в системный порт В
; Программирование делителя частоты 2 канала
mov ax,di ; Делитель частоты
out 42h,al ; Мл.байт частоты ⇒ канал 2 таймера
xchg al,ah ; AH ⇔ AL
out 42h,al ; Ст.байт частоты ⇒ канал 2 таймера
; Формирование задержки
mov cx,dx ; Счетчик цикла задержки
ton01: push cx ; Команды, используемые только для
pop cx ; увеличения длит. цикла задержки
loop ton01 ; Задержка
; Выключение звука
in al,61h ; Чтение состояния системного порта В
and al,0fch ; Запрещение звучания (биты 0 и 1)
out 61h,al ; Запись в системный порт В
sti ; Разрешение прерываний
ret ; Выход из процедуры
ton0 endp ; Конец универсальной процедуры
ton1 endp ; Конец процедуры генерации звука 1
Страницы
- « первая
- ‹ предыдущая
- …
- 89
- 90
- 91
- 92
- 93
- …
- следующая ›
- последняя »
