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

📄 music.asm

📁 汇编语言程序
💻 ASM
字号:
DATA      SEGMENT PARA 'DATA'
INFO1     DB 0DH,0AH,'HELLO TEACHER!$'
INFO2     DB 0DH,0AH,'THE SONG IS * THE TWO TIGERS *$'
MUSLIST   DB 0DH,0AH,'Q EXIT'
          db 0dh,0ah,'$'
MUS_FREG  DW  19
		  DW 2 DUP(262,294,330,262)
          DW 2 DUP(330,349,392)
          DW 2 DUP(392,440,392,349,330,262)
          DW 2 DUP(294,196,262)
          DW -1
MUS_TIME  DW 1000
		  DW 8 DUP (1500)
          DW 2 DUP (1500,1500,4000)
          DW 2 DUP (0,0,0,0,1500,1500)
          DW 3 DUP (1500,1500,4000)
          DW 3 DUP (1500,1500,4000)
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,1
          INT 10H
          
;***** SHOW SIGN*****
SHOW      MACRO b
          LEA DX,b
          MOV AH,9
          INT 21H
          ENDM
;**********************
          show INFO1
          show INFO2
          show MUSLIST
    	  MOV AH,01H
          INT 21H
          CMP AL,'Q'
          JZ retu          
          CALL MUSIC
          
RETU:     MOV AH,4CH
          INT 21H
MAIN ENDP 

MUSIC    PROC NEAR
          PUSH DS
          SUB AX,AX
          PUSH AX
          LEA SI,MUS_FREG
          LEA BP,DS:MUS_TIME
FREG1:    MOV DI,[SI]
          CMP DI,-1
          JE END_MUS1
          MOV DX,DS:[BP]
          MOV BX,1500
          ADD BX,DX
          CALL GENSOUND
          ADD SI,2
          ADD BP,2
          JMP FREG1
END_MUS1:
          RET
MUSIC    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

CODE      ENDS
          END MAIN

⌨️ 快捷键说明

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