;++++++++++++++++++++++++++++++++++++++++++++++++
;+时代变了,CPU变快了,把wait的时间延长些
;下面的delay值,适合我的P42.6G的CPU,可以听到声音
;至于delaycpu你可以调一调下面的di值
;如国想精确些,可以用时钟中断1Ch来精准延迟
;++++++++++++++++++++++++++++++++++++++++++++++++
DATASEGMENT
MUS_FREDW220,262,330,330,330,294,330,330,330,294,330,294,262,262,100,330,294
DW330,294,262,294,262,247,262,247,220,220,100,220,262
DW330,330,330,294,330,330,330,294,330,294,262,262,100,330,294
DW330,294,262,294,330,220,220,100,-1
MUS_TIMDW12DUP(25),50,4DUP(25)
DW25,50,25,25,50,25,25,25,25,50,25,25,25,25
DW12DUP(25),50,4DUP(25)
DW25,50,25,25,50,50,100,25,25
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:
MAINPROC
MOVAX,DATA
MOVDS,AX
CALLMUSIC
MOVAH,4CH
INT21H
MAINENDP
MUSICPROC
LEASI,MUS_FRE
LEABP,MUS_TIM
FRE:MOVDi,[SI];di里为音调频率
CMPDi,-1
JEEND_MUS
MOVBX,DS:[BP];bx里为延迟时间,为10ms的倍数
CALLGETSOUND
ADDSI,2
ADDBP,2
JMPFRE
END_MUS:RET
MUSICENDP
GETSOUNDPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
MOVAL,0B6H
OUT43H,AL
MOVDX,12H
MOVAX,3280h
DIVDi
OUT42H,AL
INAL,61H
MOVAH,AL
ORAL,3
OUT61H,AL
calldelay
MOVAL,AH
OUT61H,AL
POPDI
POPDX
POPCX
POPBX
POPAX
RET
GETSOUNDENDP
delayprocnear
pushsi
pushdi
movdi,400h;要想发声,把此值设置好;设置声音的频率
movsi,0
s1:
subsi,1
sbbdi,0
cmpsi,0
jnes1
cmpdi,0
jnes1
popdi
popsi
ret
delayendp
CODEENDS
ENDSTART
分 -->
|