Помощь - Поиск - Пользователи - Календарь
Полная версия: РАбота с динамиком.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
ak159
Нуждаюсь в информации о написании програмы, которая бы издавала бы какую-то заданую мелодию, с помощью динамика.
Вот нашел текст проги, которая издает новогоднию мелодию, только вот вьехать в неё никак не могу sad.gif


sseg segment stack
db 256 dup(?)
sseg ends
dseg segment
pausa1 dw 0
pausa2 dw 0
dseg ends
cseg segment
assume ss:sseg,cs:cseg,ds:dseg
start: jmp main
main: mov ax,dseg
mov ds,ax

mov bh,11h
mov bl,07h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00007h
mov pausa2,0a120h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00007h
mov pausa2,0a120h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,0f1h
mov bl,05h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,0e8h
mov bl,08h
mov pausa1,00005h
mov pausa2,0b8d8h
call proc1
call proc2
mov bh,0efh
mov bl,07h
mov pausa1,00001h
mov pausa2,0e848h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,0000fh
mov pausa2,04240h
call proc1
call proc2
mov bh,0ach
mov bl,06h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,0ach
mov bl,06h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,0ach
mov bl,06h
mov pausa1,00005h
mov pausa2,0b8d8h
call proc1
call proc2
mov bh,0ach
mov bl,06h
mov pausa1,00001h
mov pausa2,0e848h
call proc1
call proc2
mov bh,0ach
mov bl,06h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00001h
mov pausa2,0e848h
call proc1
call proc2
mov bh,11h
mov bl,07h
mov pausa1,00001h
mov pausa2,0e848h
call proc1
call proc2
mov bh,0f1h
mov bl,05h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,0f1h
mov bl,05h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,0ach
mov bl,06h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,0ach
mov bl,06h
mov pausa1,00003h
mov pausa2,0d090h
call proc1
call proc2
mov bh,0e8h
mov bl,08h
mov pausa1,0000fh
mov pausa2,04240h
call proc1
call proc2



mov ax,4c00h
int 21h
proc1 proc near
mov al,10110110b
out 43h,al
mov al,bh
out 42h,al
mov al,bl
out 42h,al
in al,61h
or al,00000011b
out 61h,al
mov cx,pausa1
mov dx,pausa2
mov ah,86h
int 15h
in al,61h
and al,11111100b
out 61h,al
ret
proc1 endp

proc2 proc near
mov al,10110110b
out 43h,al
mov al,00h
out 42h,al
mov al,00h
out 42h,al
in al,61h
mov cx,00000
mov dx,0f424h
mov ah,86h
int 15h
in al,61h
and al,11111100b
out 61h,al
ret
proc2 endp
cseg ends
end start



ПС. Ламер я в асемблере.
Dark
что именно не ясно?
zloy_pes
Вот - не мелодия, конечно, но спикер орёт smile.gif :
.model small
.code
start:
mov al,255;ставим...
out 43h,al;...таймер.
mov ax,19000;часто-
out 42h,al;та
in AL,61h;получаем состояние динамика
or AL,3;если 2 бит 0 - то динамик выключен => надо включить
out 61h,AL;включаем
jmp start;...а теперь повтор
mov ax, 4ch
int 21h
end start
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.