Курсовая работа: Программа воспроизведения произвольного звукового файла с использованием звукового адаптера (формат - wav)

and dx, 0F000h ; выровняем буфер на границу 4K-страницы

add dx, 1000h ; складываем dx и 1000h, необход. для DMA

mov ds, dx

mov dx, 0 ; DS:DX - адрес буфера

int 21h ; чтение файла

pop ds ; выгрузить из стека данные в ds

ret

error_exit: ; если не удалось открыть файл

mov ah, 9 ; AH=09h

mov dx, offset notopenmsg ; DS:DX = адрес сообщения об

; ошибке

int 21h ; вывод строки на экран

int 20h ; конец программы

notopenmsg db 'Could not open file', 0Dh, 0Ah ; сообщение об

; ошибке

db 'Exiting', 0Dh, 0Ah, '$'

open_file endp

Для компиляции будем использовать компилятор и линковщик Tasm и Tlink соответственно:

tasm /m wavdma.asm

tlink /t /x wavdma.obj

Код исходной программы(начало)

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

FILESPEC equ 'C:\WINDOWS\MEDIA\TADA.WAV'

SBPORT equ 220h

SBIRQ equ 5 ; только IRQ0-IRQ7

.model tiny

.code

.186

org 100h ; COM-программа

К-во Просмотров: 518
Бесплатно скачать Курсовая работа: Программа воспроизведения произвольного звукового файла с использованием звукового адаптера (формат - wav)