?? wave.txt
字號:
TITLE WAVE
STACK SEGMENT PARA STACK 'STACK'
DB 64 DUP('STACK...')
STACK ENDS
DSEG SEGMENT
MUS_FREQ DW 100
DW 392,330,349,392,330,349,392,196,220,247,262,294,330,349
DW 330,262,294,330,165,175,196,220,196,175,196,262,247,262
DW 220,262,247,220,196,175,196,175,165,175,196,220,247,262
DW 220,262,247,262,247,262,247,220,247,262,294,330,349,392
DW 392,330,349,392,330,349,392,196,220,247,262,294,330,349
DW 330,262,294,330,165,175,196,220,196,175,196,262,247,262
DW 220,262,247,220,196,175,196,175,165,175,196,220,247,262
DW 220,262,247,262,247,220,247,262,294,262,247,262,220,247
DW 262
DW -1
MUS_TIME DW 5
DW 50,2 DUP(25),50,10 DUP(25)
DW 50,2 DUP(25),50,10 DUP(25)
DW 50,2 DUP(25),50,10 DUP(25)
DW 50,2 DUP(25),50,10 DUP(25)
DW 50,2 DUP(25),50,10 DUP(25)
DW 50,2 DUP(25),50,10 DUP(25)
DW 50,2 DUP(25),50,10 DUP(25)
DW 50,2 DUP(25),50,10 DUP(25)
DW 200
X DW 0
DSEG ENDS
CSEG SEGMENT PARA 'CODE'
ASSUME CS:CSEG, SS:STACK, DS:DSEG
MUSIC PROC FAR
MOV AX,DSEG
MOV DS,AX
MOV AX,012H ;定義分辨率
INT 10H
LEA SI,MUS_FREQ
LEA BP,DS:MUS_TIME
FREQ:
MOV DI,[SI]
CMP DI,-1
JE END_MUS
MOV BX,DS:[BP]
;MOV AX,12H ;清屏
;INT 10H
CALL WAVE
CALL SOUNDF
ADD SI,2
ADD BP,2
JMP FREQ
END_MUS:
MOV AX,4C00H
INT 21H
MUSIC ENDP
WAVE PROC
PUSH CX
PUSH DX
PUSH AX
PUSH CX
MOV CL,5
MOV AX,BX
DIV CL
MOV BX,AX
POP CX
POP AX
ADD X,BX
MOV CX,BX
MOV AX,[SI] ;顏色
MOV DX,[SI]
NOT DX
ADD DX,480
AGAIN:
PUSH CX
NOT CX
ADD CX,X
MOV AH,0CH
INT 10H
POP CX
LOOP AGAIN
POP DX
POP CX
RET
WAVE ENDP
SOUNDF PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
MOV AL,0b6h
OUT 43H,AL
MOV DX,12H
MOV AX,348CH
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,3663h ;延遲時間
CALL WAITF
DEC BX
JNZ WAIT1
MOV AL,AH
OUT 61H,AL
POP DI
POP DX
POP CX
POP BX
POP AX
RET
SOUNDF ENDP
WAITF PROC NEAR
PUSH AX
WAITF1:
IN AL,61H
AND AL,10H
CMP AL,AH
JE WAITF1
MOV AH,AL
LOOP WAITF1
POP AX
RET
WAITF ENDP
CSEG ENDS
END MUSIC
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -