Курсовая работа: Программа воспроизведения произвольного звукового файла с использованием звукового адаптера (формат - wav)
call dsp_reset ; инициализация DSP
jc no_blaster
mov bl, 0D1h ; команда 0D1h
call dsp_write ; включитьзвук
call open_file ; прочитатьфайлвбуфер
call hook_sbirq ; перехватитьпрерывание
mov bl, 40h ; команда 40h
call dsp_write ; установка скорости передачи
mov bl, 0B2h ; константа для 11025Hz/Stereo
call dsp_write
call program_dma ; начнём DMA-передачуданных
main_loop: ; основнойцикл
cmp byte ptr finished_flag, 0
je main_loop ; выходкогдабайт finished_flag = 1
call restore_sbirq ; восстановитьпрерывание
no_blaster:
ret
old_sbirq dd ? ; адрес старого обработчика
finished_flag db 0 ; флаг окончания работы
filename db FILESPEC, 0 ; имя файла
; обработчик прерывания звуковой карты
; устанавливает флаг finished_flag в 1
sbirq_handler proc far
push ax
mov byte ptr cs:finished_flag, 1 ; установитьфлаг
mov al, 20h ; послать команду EOI
Код исходной программы(продолжение)
out 20h, al ; в контроллер прерываний
pop ax