Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2013, 22:39   #1
икше
 
Регистрация: 01.12.2012
Сообщений: 7
По умолчанию запрограммировать системный таймер на звучание фрагмента известной мелодии.

Помогите пожалуйста!

Запрограммировать системный таймер на звучание фрагмента известной мелодии.
икше вне форума Ответить с цитированием
Старый 17.05.2013, 00:30   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

поиском по форуму не пользовались?

вот посты про TurboPascal:
вот эта тема воспройзведение музыкальных файлов
и мой пост ТУТ в теме нужна программа со звуком


в принципе, представленные мною примеры можно и на Ассемблер переложить - благо нужные константы и обработчик прерывания 1Ch в коде уже есть...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2013, 10:45   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

икше,
играем спикером цирковой марш, выводя в порт 42h цепочку байт
Код:
   in al,61h; получаем текущее состояние порта 61h в AL
   or al,00000011b; установим 0-й и 1-й биты в 1
   out 61h,al; теперь динамик включен
   mov al,0B6h; канал 2, режим 3
   out 43h,al;отправляем в командный регистр
   mov si,offset melody; указываем на данные
   mov cx,size_melody ; устанавливаем счетчик
   mov dx,42h;будем посылать байты во 2-й канал
a15: push dx
   mov ah,0; получаем задержку через DOS, а можно через int 1Ah 
;API- функцию Sleep или через rdtsc
   mov bx,dx
@@: int 1Ah; крутимся до тех пор пока не получится
   cmp bx,dx; задержка в 55 мСек
   jnz @b
   pop dx; команда outs выводит данные в порт ввода-вывода,
   outsb ; номер которого загружен в регистр DX,
   loop a15 ; из ячейки памяти по адресу DS:SI
   in al,61h; получаем текущее состояние порта 61h в AL
   and al,11111100b; обнуляем два младших бита
   out 61h,al; теперь динамик выключен
.data; мелодия циркового марша
melody dw 354h,354h,2,2,387h,387h,2,2,3BDh,3BDh,387h,387h
dw 3BDh,3BDh,3F5h,3F5h,432h,432h,2,2,472h,472h,2,2,4 dup(4B5h)
dw 4 dup(472h),3F5h,3F5h,2,2,432h,432h,2,2,472h,472h,432h
dw 432h,472h,472h,4B5h,4B5h,4FDh,4FDh,2,2,549h,549h,2,2
dw 4 dup(599h),4 dup(549h),472h,472h,2,2,2 dup(5EEh,2)
dw 4 dup(649h),4 dup(5EEh),472h,472h,2,2,2 dup(5EEh,2)
dw 4 dup(649h),4 dup(5EEh),70Eh,70Eh,6A8h,6A8h,649h,649h,5EEh
dw 5EEh,599h,599h,549h,549h,4FDh,4FDh,4B5h,4B5h,472h,472h,2
dw 2,432h,432h,2,2,3F5h,3F5h,2,2,387h,387h,2,2,8 dup(354h),2
size_melody = $ - melody; длина мелодии
Mikl___ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системный таймер Rage2304 Общие вопросы C/C++ 0 18.12.2011 21:19
нужно запрограммировать таймер(написать прогу) Дашак Помощь студентам 0 01.06.2010 13:45
нужно запрограммировать таймер(написать прогу) Дашак Помощь студентам 0 01.06.2010 13:43