
你可以把音乐文件放在跟执行程序同一个目录下,然后通过程序的
__启动窗口_创建完毕
下写入这些代码
播放MP3 (播放次数.整数型, “MP3文件路径.文本型”)
路径可以用 取运行目录()+"\MP3文件.mp3"
希望能够帮助到你
你的程序最后缺少:code ends
end start
===================================
DATA SEGMENT PARA 'DATA'
MUSIC_F DW 440,392,330,392,524,440,392,440
DW 330,392,440,392,330, 262,220,392,330,294
DW 294,330,392,392,440,330,294,262
DW 392,330,294,262,220,262,196,0
MUSIC_T DW 32000,16000,32000,32000,32000,16000,16000,32000
DW 32000,16000,16000,32000,32000,16000,16000,16000,16000, 32000
DW 32000,16000,32000,16000,16000,32000,32000,32000
DW 32000,16000,16000,16000,16000,32000
DATA ENDS CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE,DS:DATA
START1 PROC FAR
start:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA SI,MUSIC_F
NEXT: LEA BP,MUSIC_T
START2: MOV DI,[SI]
CMP DI,0
JE EXIT
MOV BX,DS:[BP]
MOV AL,0B6H 向 8253 计数器 2 写控制字(主板规定)
OUT 43H,AL 方式 3、双字节写和二进制计数方式写到控制口
MOV DX,12H 设置被除数
MOV AX,3208H 其商(AX)为预置值
DIV DI
OUT 42H,AL 先送低位数据
MOV AL,AH
OUT 42H,AL 再送高位数据
IN AL,61H 读 8255 端口 B(61H)原值
MOV AH,AL
OR AL,03H
OUT 61H,AL 使与门打开,GETE2 有效,扬声器响
WAIT1:MOV CX,2801H
DELAY:LOOP DELAY 时间延迟次数为 2801H 次
DEC BX 循环持续 BX 次
JNZ WAIT1
MOV AL,AH 写回 61H 口原值,关闭扬声器
OUT 61H,AL
ADD SI,2
ADD BP,2
JMP START2
EXIT: MOV AL,48H
OUT 61H,AL
RET
START1 ENDP
code ends
end start
这是一个音乐程序,按大写字母“A”,唱乐曲“玛丽有只小羔羊”;按大写字母“B”,唱乐曲“太湖船”
按大写字母“C”,唱乐曲“祝福歌”
按"X"键,退出
DATA SEGMENT PARA 'DATA'
INFO1 DB 0DH,0AH,'WELCOME YOU TO COME HERE!$'
INFO2 DB 0DH,0AH,'this is a music program!$'
INFO3 DB 0DH,0AH,'please select!$'
INFO4 DB 0DH,0AH,'INPUT ERROR!$'
INFO5 DB 0DH,0AH,'PLEASE INPUT AGAIN!$'
MUSLIST DB 0DH,0AH,'A MUSIC1'
DB 0DH,0AH,'B MUSIC2'
DB 0DH,0AH,'C MUSIC3'
DB 0DH,0AH,'Q EXIT'
db 0dh,0ah,'$'
MUS_FREG1 DW 330,294,262,294,3 DUP (330)
DW 3 DUP (294),330,392,392
DW 330,294,262,294,4 DUP (330)
DW 294,294,330,294,262,-1
MUS_TIME1 DW 6 DUP (25*8),50*8
DW 2 DUP (25*8,25*8,50*8)
DW 12 DUP (25*8),100*8
MUS_FREG2 DW 330,392,330,294,330,392,330,294,330
DW 330,392,330,294,262,294,330,392,294
DW 262,262,220,196,196,220,262,294,332,262,-1
MUS_TIME2 DW 3 DUP(50),25,25,50,25,25,100
DW 2 DUP(50,50,25,25),100
DW 3 DUP(50,25,25),100
MUS_FREG3 DW 262,262,294,262,349
DW 330,262,262,294,262
DW 392,349,262,262,523
DW 440,349,262,262,466
DW 466,440,262,392,349,-1
MUS_TIME3 DW 50,50,100,100,100
DW 100,100,50,50,100,100
DW 100,100,100,50,50,100
DW 100,100,100,100,100,50
DW 50,100,100,100,100,100
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DB 200 DUP ('STACK')
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV aH, 0
MOV AL,4
INT 10H
MOV AH,0BH
MOV BH,0
MOV BL,4
INT 10H
MOV AH,0BH
MOV BH,01H
MOV BL,00
INT 10H
*****定义一个宏*****
SHOW MACRO b
LEA DX,b
MOV AH,9
INT 21H
ENDM
**********************
show INFO1
show INFO2
show INFO3
show MUSLIST
INPUT:MOV AH,01H
INT 21H
CMP AL,'Q'
JZ retu
CMP AL,'A'
JNZ B0
CALL MUSIC1
JMP EXIT1
B0: CMP AL,'B'
JNZ C0
CALL MUSIC2
JMP EXIT1
C0: CMP AL,'C'
JNZ exit
CALL MUSIC3
EXIT1:show INFO5
JMP INPUT
EXIT:
call clear
show INFO4
show INFO5
show INFO1
show INFO2
show INFO3
show MUSLIST
jmp input
RETU: MOV AH,4CH
INT 21H
MAIN ENDP
MUSIC1PROC NEAR
PUSH DS
SUB AX,AX
PUSH AX
LEA SI,MUS_FREG1
LEA BP,DS:MUS_TIME1
FREG1: MOV DI,[SI]
CMP DI,-1
JE END_MUS1
MOV DX,DS:[BP]
MOV BX,1400
CALL GENSOUND
ADD SI,2
ADD BP,2
JMP FREG1
END_MUS1:
RET
MUSIC1ENDP
GENSOUND PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
MOV AL,0B6H
OUT 43H,AL
MOV DX,12H
MOV AX,533H*896
DIV DI
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
MOV AH,AL
OR AL,3
OUT 61H,AL
WAIT1:MOV CX,8FF0H
DELAY1: LOOP DELAY1
DEC BX
JNZ WAIT1
MOV AL,AH
OUT 61H,AL
POP DI
POP DX
POP CX
POP BX
POP AX
RET
GENSOUND ENDP
MUSIC2PROC NEAR
PUSH DS
SUB AX,AX
PUSH AX
LEA SI,MUS_FREG2
LEA BP,DS:MUS_TIME2
FREG2:MOV DI,[SI]
CMP DI,-1
JE END_MUS2
MOV DX,DS:[BP]
MOV BX,1400
CALL GENSOUND
ADD SI,2
ADD BP,2
JMP FREG1
END_MUS2:
RET
MUSIC2ENDP
MUSIC3PROC NEAR
PUSH DS
SUB AX,AX
PUSH AX
LEA SI,MUS_FREG3
LEA BP,DS:MUS_TIME3
FREG3:MOV DI,[SI]
CMP DI,-1
JE END_MUS3
MOV DX,DS:[BP]
MOV BX,1400
CALL GENSOUND
ADD SI,2
ADD BP,2
JMP FREG1
END_MUS3:
RET
MUSIC3ENDP
clear proc near
push ax
push bx
push cx
push dx
mov ah,6
mov al,0
mov ch,0
mov cl,0
mov dh,24
mov dl,79
mov bh,7
int 10h
pop dx
pop cx
pop bx
pop ax
ret
clear endp
CODE ENDS
END MAIN
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)