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

📄 yingyue.asm.txt

📁 音乐程序功能 如输入A唱第一首歌 输B唱另一首歌 输X退出程序~
💻 TXT
字号:


  ;文件名为:music.asm

  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

  MUSIC1 PROC 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

  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_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

  MUSIC2 ENDP

  MUSIC3 PROC 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

  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 + -