汇编 如何编写发出7个音符声音的程序?

来源:百度知道 编辑:UC知道 时间:2024/06/30 14:15:17
code segment
buf dw ..
...
...
code ends
...
要求7个音符1~7的频率已经放在内存中,然后从键盘输入数字,如输入5,则从对应内存中找出那个频率然后使它发出声音,延时好像是用双重循环,外循环计数08ff,内循环0ffff,好像还跟什么8255芯片有关,我也不知道怎么写了,所以求助各位高手,明天的作业题迫在眉睫啊!

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:输出回车换行
enter_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
enter_CTLF endp
; -----------------------------------------
; Subroutine 延时指定的时钟嘀嗒数
; 入口:
; Didas=时钟嘀嗒数(1秒钟约嘀嗒18.2次,10秒钟嘀嗒182次。若延时不是秒的10数次倍,误差稍微大点)
Delay Proc Near
push dx
push cx
xor ax,ax
int 1ah
mov Times,dx
mov Times[2],cx
Read_Time: xor ax,ax
int 1ah
sub dx,Times
sbb cx,Times[2]
cmp dx,Didas
jb Read_Time
pop cx
pop dx
ret
Times dw 0,0
Delay EndP
; -----------------------------------------
; 入口参数
; SI=声音频率地址
Music Proc Near
in al,61h
push ax
or al,3
out 61h,al ;接通扬声器
push cx
push dx