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

📄 choose.asm

📁 选择音乐
💻 ASM
字号:


        DATA  SEGMENT
    MESSAGE0  DB        13,10,'STUDENT NUMBER:510701229',13,10,'$'
    MESSAGE1  DB        13,10,'*****WELCOME TO MY MUSIC SYSTEM*****','$'
    MESSAGE2  DB        13,10,'PLESE SELECT....(A,B.C,D)','$'
    MESSAGE3  DB        13,10,'A.  MUSIC  ONE','$'
    MESSAGE4  DB        13,10,'B.  MUSIC  TWO','$'
    MESSAGE5  DB        13,10,'C.  MUSIC  THREE','$'
    MESSAGE6  DB        13,10,'D.  EXIT  ',13,10,'$'


        MUS1  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

        MUS2  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

        MUS3  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

        CODE  SEGMENT
        MAIN  PROC      FAR
              ASSUME    CS:CODE,DS:DATA
      START:
              PUSH      DS
              MOV       AX,AX
              PUSH      AX
              MOV       AX,DATA
              MOV       DS,AX

              CALL      CLEAR_SCREEN

              MOV       CH,7
              MOV       CL,14
              MOV       AH,1
              INT       10H
              MOV       DH,7
              MOV       DL,22
              MOV       BH,0
              MOV       AH,2
              INT       10H




              MOV       AH,9
              MOV       DX,SEG MESSAGE0
              MOV       DS,DX
              MOV       DX,OFFSET MESSAGE0
              INT       21H
              MOV       AH,9
              MOV       DX,SEG MESSAGE1
              MOV       DS,DX
              MOV       DX,OFFSET MESSAGE1
              INT       21H
              MOV       AH,9
              MOV       DX,SEG MESSAGE2
              MOV       DS,DX
              MOV       DX,OFFSET MESSAGE2
              INT       21H
              MOV       AH,9
              MOV       DX,SEG MESSAGE3
              MOV       DS,DX
              MOV       DX,OFFSET MESSAGE3
              INT       21H
              MOV       AH,9
              MOV       DX,SEG MESSAGE4
              MOV       DS,DX
              MOV       DX,OFFSET MESSAGE4
              INT       21H
              MOV       AH,9
              MOV       DX,SEG MESSAGE5
              MOV       DS,DX
              MOV       DX,OFFSET MESSAGE5
              INT       21H
              MOV       AH,9
              MOV       DX,SEG MESSAGE6
              MOV       DS,DX
              MOV       DX,OFFSET MESSAGE6
              INT       21H

              CALL      MUSIC

              RET
        MAIN  ENDP

            CLEAR_SCREEN  PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              MOV       AH,6
              MOV       AL,0
              MOV       BH,7
              MOV       CL,0
              MOV       DH,24
              MOV       DL,79
              INT       10H
              MOV       DX,0
              MOV       AH,2
              INT       10H
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
            CLEAR_SCREEN  ENDP


       MUSIC  PROC      NEAR


              MOV       AH,01H
              INT       21H

              CMP       AL,41H
              JE        A
              
              CMP       AL,42H
              JE        B
              
              CMP       AL,43H
              JE        C
              
              CMP       AL,44H
              JE        END_MUS
              JMP       MUSIC
          A:
              LEA       SI,MUS1
              LEA       BP,DS:MUS_TIME1
              JMP       FREQ
          B:
              LEA       SI,MUS2
              LEA       BP,DS:MUS_TIME2
              JMP       FREQ
          C:
              LEA       SI,MUS3
              LEA       BP,DS:MUS_TIME3
              JMP       FREQ
              
       FREQ:
              MOV       DI,[SI]
              CMP       DI,-1
              JE        MUSIC
              MOV       BX,DS:[BP]
              CALL      SOUNDF
              ADD       SI,2
              ADD       BP,2
              JMP       FREQ
    END_MUS:
              MOV       AX,4C00H
              INT       21H
       MUSIC  ENDP
              
              
      SOUNDF  PROC      NEAR
              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,03H
              OUT       61H,AL
              MOV       CX,33144
              CALL      WAITF
              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
                            
              
              
        CODE  ENDS

              
             
              END       START


⌨️ 快捷键说明

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