正文

发声程序(汇编)2007-04-09 12:29:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lingdlz/24726.html

分享到:

;---------------------------------------------------------
;控制扬声器发声,可惜声音不大
;---------------------------------------------------------

.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,bx
mkSnDelay: loop mkSnDelay 
 dec dx
 jnz mkSound
 pop dx
 pop ax
 ret
makeSound endp

;---------------------------------------------------------
;主过程
;---------------------------------------------------------
main proc far
 mov ax,data
 mov ds,ax
 mov bx,sntimes
 mov cx,sndelay
 call makeSound 
 macExit
main endp
 code ends
 end main

  

阅读(5470) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册