TITLE "BEEP" - Generuj zvuk na PC SPEAKERU .8086 ; Linkuje se pro i8086 PAGE 67, 130 ; Stránka 67 zn., délka 130 zn./řádek COMMENT @ =========================================================================== Název souboru : BEEP.ASM Link OBJ & LIB : BEEP.ZIP Datum úprav : 01.09.97 Verze programu : 4.00 (c) Copyright : 1993,94,95,96,97 by NST 32 , Medo Zdeněk junior ===========================================================================@ Knihovna_NST32 SEGMENT PARA PUBLIC 'CODE' USE16 ASSUME CS:Knihovna_NST32 PUBLIC __beep ; EXTRN __beep :PROC :NEAR EXTRN __pause_ms_hw :PROC :NEAR ; {PC_HW.LIB} EXTRN __cpu_pause :PROC :NEAR ; {PC_HW.LIB} ;--------------------------------------------------------------------------- ; ; Popis funkce : Procedura prostřednictvím druhého časovače generuje ; -------------- daný tón. ; ; Volání(např.) : mov bx, 10 ; Délka tónu (v 1/64 sekundy) ; -------------- mov cx, 500 ; Koeficient frekvence ; ; (1 193 180/frek. Hz) ; call __beep ; Generuj tón ; ; Mění registry : Flags, AX, BX, CX ; -------------- ; ;--------------------------------------------------------------------------- __beep PROC NEAR mov al, 10110110B ; Aktivizace druhého časovače out 43H, al ; Odeslání do příkazového registru call __cpu_pause ; Časová prodleva CPU (5x JMP $+2) mov al, cl ; Koef.frekvence - nižší slabika out 42H, al ; Odeslání na druhý časovač call __cpu_pause ; Časová prodleva CPU (5x JMP $+2) mov al, ch ; Koef.frekvence - vyšší slabika out 42H, al ; Odeslání na druhý časovač in al, 61H ; Načtení stavu portu mov ah, al ; Uložení tohoto stavu or al, 00000011B ; Zapnutí zvuk. výstupu out 61H, al ; Odeslání na port Ton1: mov cx, 2 ; Hodnota pro délku (1035 = 1/64 sekundy) call __pause_ms_hw ; Čekej CX x (15.085 737 ms) dec bx ; Ješte jsme neskončili ? jnz Ton1 ; Ne, hrajeme dále in al, 61H ; Načtení stavu portu and al, 11111100B out 61H, al retn ; Návrat NEAR __beep ENDP Knihovna_NST32 ENDS END