Листинг 7-10. BEEP.ASM
-------------------------------------------------------------------
TITLE Beep
_TEXT SEGMENT BYTE PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT WORD PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT WORD PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT WORD PUBLIC 'BSS'
_BSS ENDS
DGROUP GROUP CONST, _BSS, _DATA
ASSUME CS:_TEXT, DS:DGROUP, SS:DGROUP, ES:DGROUP
_TEXT SEGMENT
timer equ 40h
port_b equ 61h
;----- Издает слышимый звук на внутреннем громкоговорителе ПЭВМ
; Длительность звука управляется одним целым аргументом.
;
PUBLIC _Beep
PUBLIC _Beep
_Beep PROC NEAR
push bp
mov bp,sp
mov al,10110110B ;генерируется короткий звук (длинный
; теряет данные)
out timer+3,al ;код, взятый из технич-го описания
mov ax,533H
out timer+2,al
mov al,ah
out timer+2,al
in al,port_b
mov ah,al
or al,03
out port_b,al
mov cx,[bp+4]
mov bl,1
beep0: loop beep0
dec bl
jnz beep0
mov al,ah
out port_b,al
pop bp
ret
_Beep ENDP
_TEXT ENDS
END
-------------------------------------------------------------------
|