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

📄 bb.asm

📁 这是一个简易电子音乐 的汇编程序。。挺不错的
💻 ASM
字号:
DATA      SEGMENT 

INFO1     DB 0DH,0AH,'                 WELCOME YOU TO COME HERE!',0DH,0AH,'$' 

INFO2     DB 0DH,0AH,'                 THIS IS A MUSIC PROGRAM!','$' 

INFO3     DB 0DH,0AH,'                      PLEASE SELECT!',0DH,0AH,'$' 

INFO4     DB 0DH,0AH,'                 INPUT ERROR!','$' 

INFO5     DB 0DH,0AH,'                 PLEASE INPUT AGAIN!' ,0DH,0AH,'$'

MUSLIST DB'         ****************************************',0DH,0AH

              DB'         *      THE MUSIC MENU IS THAT:                 * ',0DH,0AH

              DB'         *      1:CHRISTMAS RING                       * ',0DH,0AH          

              DB'         *      2:MUSIC2                           * ',0DH,0AH      

              DB'         *      3:MUSIC3                           * ',0DH,0AH      

              DB'         *      4:JU HUA TAI                           * ',0DH,0AH      

              DB'         *      5:OPEN FILE                           * ',0DH,0AH

              DB'         *      6:EXIT                               * ',0DH,0AH

              DB'         ****************************************',0DH,0AH,'$'     

DATABUFF DB 1024 DUP(?)

FHANDLE   DW ?      

FNAME DB  255,30,255 DUP(?)

 

BIAO1         DB 52,58,66,70,78,88,99

BIAO2     DB 100,200

 

MUS_FREG1 DW 7 DUP(330),392,262,294,330,4 DUP(349),2 DUP(330),330,294,294,262,294,392

                DW 7 DUP(330),392,262,294,330,4 DUP(349),2 DUP(330),392,392,349,294,262,0

MUS_TIME1 DW 2 DUP(25*400,25*400,50*400),4 DUP(25*400),100*400,2 DUP(25*400,25*400,50*400)

                DW 4 DUP(25*400),2 DUP(50*400),2 DUP(25*400,25*400,50*400)

                DW 4 DUP(25*400),100*400,2 DUP(25*400,25*400,50*400),4 DUP(25*400),100*400

 

MUS_FREG2 DW 262,262,392,392,440,440,392,349,349,330,330,294,294,262

                DW 2 DUP(392,392,349,349,330,330,294)

                DW 262,262,392,392,440,440,392,349,349,330,330,294,294,262,0 

MUS_TIME2 DW 3 DUP(6 DUP(25*400),50*400,6 DUP(25*400),50*400)

 

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,0

         

MUS_TIME3 DW 10000,20000,20000,20000,20000 

          DW 20000,20000,10000,10000,20000

          DW 20000,20000,20000,10000,10000

          DW 20000,20000,20000,20000,20000

          DW 10000,20000,20000,20000,20000

M4        DW 659,659,578,659,659,784,659,578,659,523,523,578,659,784,659,578,523,578

                DW 659,784,659,880,784,880,784,784,659 ,392,0

MT4       DW 20000,15000,10000,25000,10000,10000,10000,10000,25000,15000,4 DUP(10000),15000

          DW 10000,2 DUP(10000), 10000,25000

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 

START:
          MOV AX,DATA  ;数据段段地址送DS

          MOV DS,AX    

          MOV AH, 0   ;BIOS调用设置显示方式640*480 16色图形

          MOV AL,12H 

          INT 10H 

          MOV AH,0BH  ;BIOS调用设置背景颜色

          MOV BH,0 

          MOV BL,5

          INT 10H 

          MOV AH,0BH  ;BIOS调用设置调色板

          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 

INP:       MOV AH,01H   ;DOS调用从键盘输入字符

          INT 21H 

          CMP AL,'6'   ;输入6则退出

          JZ RETU 

          CMP AL,'1'  ;输入1则演奏CHRISTMAS RING

          JNZ B0 

        CALL MUSIC1 

        JMP EXIT1 

B0:     CMP AL,'2'  ;输入2则演奏MUSIC2

        JNZ C0 

        CALL MUSIC2 

        JMP EXIT1  ;输入3演奏MUSIC3

C0:     CMP AL,'3' 

        JNZ D0

        CALL MUSIC3

           JMP EXIT1 

D0:     CMP AL,'4' ;输入4演奏 菊花台

        JNZ  E0

              CALL MUSIC4

              JMP EXIT1

E0:          CMP AL,'5'       ;输入5 则转入文件输入演奏文件音乐

        JNZ EXIT

              ;CALL WEN

              JMP EXIT1

EXIT1:  SHOW INFO5 

        JMP INP  

EXIT:      

;CALL CLEAR 

          MOV AH, 0   ;BIOS调用设置显示方式640*480 16色图形

          MOV AL,12H 

          INT 10H 

          MOV AH,0BH    ;BIOS调用设置背景颜色

          MOV BH,0 

          MOV BL,5

          INT 10H 

          MOV AH,0BH      ;BIOS调用设置调色板

          MOV BH,01H 

          MOV BL,00 

          INT 10H 

          SHOW INFO4            ;显示提示字符

          SHOW INFO5 

          SHOW INFO1 

          SHOW MUSLIST 

          JMP INP              

RETU:     MOV AH,4CH                ;退出DOS

          INT 21H 
MAIN ENDP
 

MUSIC1    PROC NEAR           ;音乐1演奏子程序

        LEA SI,MUS_FREG1  ;频率首地址装入SI

        LEA BP,MUS_TIME1  ;持续时间首地址装入BP 

F1:    MOV DI,[SI]    ;把频率值送DI

          CMP DI,0 ; 判断乐谱是否结束0结束退出

          JE END_MUS1 

          MOV BX,DS:[BP]   ;把持续时间值送BX

          ;CALL GENSOUND   ;调用发音子程序

          ADD SI,2           ;使地址指向下一个频率

          ADD BP,2          ;使地址指向下一个时间

          JMP F1             ;循环演奏

END_MUS1: 

          RET          ;返回(MUSIC 2 3 4与1相似)

MUSIC1    ENDP 

                                  

MUSIC2    PROC NEAR 

           LEA SI,MUS_FREG2 

          LEA BP,MUS_TIME2 

F2:    MOV DI,[SI] 

          CMP DI,0 

          JE END_MUS2 

          MOV BX,DS:[BP] 

          ;CALL GENSOUND 

          ADD SI,2 

          ADD BP,2 

          JMP F2

END_MUS2: 

          RET 

MUSIC2    ENDP 

 

MUSIC3    PROC NEAR 

          LEA SI,MUS_FREG3

          LEA BP,MUS_TIME3 

F3:    MOV DI,[SI] 

          CMP DI,0 

          JE END_MUS3 

          MOV BX,DS:[BP] 

          ;CALL GENSOUND 

          ADD SI,2 

          ADD BP,2 

          JMP F3

END_MUS3: 

          RET 

MUSIC3    ENDP 

 

MUSIC4    PROC NEAR 

          LEA SI,M4 

      LEA BP,MT4 

F4:    MOV DI,[SI] 

          CMP DI,0 

          JE END_MUS4 

          MOV BX,DS:[BP] 

          ;CALL GENSOUND 

          ADD SI,2 

          ADD BP,2 

          JMP F4

END_MUS4: 

          RET 

MUSIC4    ENDP

CODE ENDS

END START

⌨️ 快捷键说明

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