ВУЗ:
Составители:
90
; Универсальная процедура генерации звука
; DX – количество циклов, DI – задержка
ton0 proc near
cli ; Запрещение прерываний
in al,port_b ; Чтение сост. системн. порта В
and al,11111110b ; Отк. динамика от таймера
ton01: or al,00000010b ; Включение динамика
out port_b,al ; Запись в системный порт В
mov cx,di ; Счетчик цикла задержки
loop $ ; Задержка
; Выключение звука
and al,11111101b ; Выключение динамика
out port_b,al ; Запись в системный порт В
mov cx,di ; Счетчик цикла задержки
loop $ ; Задержка
dec dx ; Декремент
счетчика колич. циклов
jnz ton01 ; Переход на начало нового периода
sti ; Разрешение прерываний
ret ; Выход из процедуры
ton0 endp ; Конец универсальной процедуры
ton1 endp ; Конец процедуры генерации звука 1
ton2 endp ; Конец процедуры генерации звука 2
kbin proc near ; Ввод с клавиатуры с ожиданием
mov ah,0 ; Функция 0
int 16h ; клавиатурного прерывания
ret ; Выход из процедуры
kbin endp ; Конец процедуры ввода с клавиатуры
code ends ; Конец сегмента (кодового)
END Start ; Указание
на точку входа
Задача 3.4.2.2. Написать программу, издающую различные звуки при
нажатии на клавиши '1' и '2'. Для генерации звука следует выход канала 2
таймера. Выход из программы должен осуществляться по нажатию
клавиши 'q'.
Assume CS: Code, DS: Code
Code SEGMENT
org 100h
frequency1 equ 1000 ; Коэффиц. деления 1
frequency2 equ 3000 ; Коэффиц. деления 2
duration equ 50000 ; Длительность
port_b equ 61h ; Адрес системного порта В
.286
Start proc near ; Основная процедура
mov ax,cs
mov ds,ax ; DS = CS
90
; Универсальная процедура генерации звука
; DX – количество циклов, DI – задержка
ton0 proc near
cli ; Запрещение прерываний
in al,port_b ; Чтение сост. системн. порта В
and al,11111110b ; Отк. динамика от таймера
ton01: or al,00000010b ; Включение динамика
out port_b,al ; Запись в системный порт В
mov cx,di ; Счетчик цикла задержки
loop $ ; Задержка
; Выключение звука
and al,11111101b ; Выключение динамика
out port_b,al ; Запись в системный порт В
mov cx,di ; Счетчик цикла задержки
loop $ ; Задержка
dec dx ; Декремент счетчика колич. циклов
jnz ton01 ; Переход на начало нового периода
sti ; Разрешение прерываний
ret ; Выход из процедуры
ton0 endp ; Конец универсальной процедуры
ton1 endp ; Конец процедуры генерации звука 1
ton2 endp ; Конец процедуры генерации звука 2
kbin proc near ; Ввод с клавиатуры с ожиданием
mov ah,0 ; Функция 0
int 16h ; клавиатурного прерывания
ret ; Выход из процедуры
kbin endp ; Конец процедуры ввода с клавиатуры
code ends ; Конец сегмента (кодового)
END Start ; Указание на точку входа
Задача 3.4.2.2. Написать программу, издающую различные звуки при
нажатии на клавиши '1' и '2'. Для генерации звука следует выход канала 2
таймера. Выход из программы должен осуществляться по нажатию
клавиши 'q'.
Assume CS: Code, DS: Code
Code SEGMENT
org 100h
frequency1 equ 1000 ; Коэффиц. деления 1
frequency2 equ 3000 ; Коэффиц. деления 2
duration equ 50000 ; Длительность
port_b equ 61h ; Адрес системного порта В
.286
Start proc near ; Основная процедура
mov ax,cs
mov ds,ax ; DS = CS
Страницы
- « первая
- ‹ предыдущая
- …
- 88
- 89
- 90
- 91
- 92
- …
- следующая ›
- последняя »
