;---------------------------------------------------------;控制扬声器发声,可惜声音不大;--------------------------------------------------------- .model small data segment sntimes dw 10000 ;发声频率 sndelay dw 10000 ;延迟时间data ends code segment assume cs:code,ds:data ;---------------------------------------------------------;结束程序,回到 DOS ;---------------------------------------------------------macExit macro mov ah,4ch int 21h endm ;---------------------------------------------------------; 控制扬声器发声; cx:发声频率 bx:延迟时间;---------------------------------------------------------makeSound proc far push ax push dx mov dx,cx in al,61h ;61h 为 I/O 地址 and al,11111100b ;第 1 位为控制发声的开关,第 0 位不用mkSound: xor al,2 ;是第 0 位的值 0,1交替 out 61h,al mov cx,bxmkSnDelay: loop mkSnDelay dec dx jnz mkSound pop dx pop ax retmakeSound endp ;---------------------------------------------------------;主过程;---------------------------------------------------------main proc far mov ax,data mov ds,ax mov bx,sntimes mov cx,sndelay call makeSound macExitmain endp code ends end main

评论