⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.asm

📁 认同感胡荣华冶容诲用户人员很容易华人还有人员会
💻 ASM
字号:
DATA  SEGMENT PARA 'DATA'
INFO1 DB 0DH,0AH,'WELCOME YOU TO COME HERE!E.K.SU$'
INFO2 DB 0DH,0AH,'this is a music program!$'
INFO3 DB 0DH,0AH,'PLEASE SELECT!$'
INFO4 DB 0DH,0AH,'INPUT ERROR!$'
INFO5 DB 0DH,'PLEASE INPUT AGAIN!$'
MUSLIST     DB 0DH,0AH,'==================='
            DB 0DH,0AH,'| A MUSIC1        |'
            DB 0DH,0AH,'| B MUSIC2        |'
            DB 0DH,0AH,'| C MUSIC3        |'
            DB 0DH,0AH,'| Q EXIT          |'
            DB 0DH,0AH,'==================='
            DB 0DH,0AH,0DH,0AH,'$'
MUS_FREQ1   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_FREQ2   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_FREQ3   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,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

MUSIC1      PROC NEAR
            PUSH DS
            SUB AX,AX
            PUSH AX
            LEA SI,MUS_FREQ1
            LEA BP,DS:MUS_TIME1
FREQ1:      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 FREQ1
END_MUS1:
            RET
MUSIC1      ENDP

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

MUSIC2      PROC NEAR
            PUSH DS
            SUB AX,AX
            PUSH AX
            LEA SI,MUS_FREQ2
            LEA BP,DS:MUS_TIME2
FREQ2:      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 FREQ1
END_MUS2:
            RET
MUSIC2      ENDP
MUSIC3      PROC NEAR
            PUSH DS
            SUB AX,AX
            PUSH AX
            LEA SI,MUS_FREQ3
            LEA BP,DS:MUS_TIME3
FREQ3:      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 FREQ1
END_MUS3:
            RET
MUSIC3      ENDP
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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -