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

📄 music.asm

📁 汇编写的一个声音程序
💻 ASM
字号:
DATA      	SEGMENT PARA 'DATA'
MUS_hz   	DW 1,2,3,3,4 DUP (6)
          	DW 7 DUP (4),5, 6,7
          	DW 6,7,8,9,4 DUP (3)
          	DW 2,4,5,3,7
          	DW 9,9,3,9,2,-1
TM1 		DB 2,2,2,4,2,2,2,2,2,2,4,2,4,2,2,2,2,2,2,2,2,2,
		2,2,12,2,2,2,2,2,2,2,8,2,2,
		2,2,2,2,2,4,4,2,2,2,2,2,12 
ATM1 		EQU 1000 
YF 		DW ? 
TM 		DW ?		          	
TIME      	DW ?
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
INPUT:    	MOV AH,01H
          	INT 21H
          	CMP AL,'Q'
          	JZ rete
;M1: 		LEA SI,YF1 
		;MOV YF,SI 
		;LEA SI,TM1 
		;MOV TM,SI           	
          	CALL MUSIC
          	JMP EXIT
EXIT:    	JMP INPUT 
RETE:     	MOV AH,4CH
          	INT 21H
MAIN ENDP 
MUSIC    PROC NEAR
          	PUSH DS
          	SUB AX,AX
          	PUSH AX
        	LEA SI,MUS_hz
START:    	MOV DI,[SI]
         	CMP DI,-1
         	JE END_MUS
         	MOV DX,DS:[BP]
         	MOV BX,2000
         	CALL GENSOUND
         	INC SI
         	ADD BP,2
         	JMP START
END_MUS: 	RET         
MUSIC    	ENDP
GENSOUND 	PROC NEAR          
		PUSH AX
         	PUSH BX
         	PUSH CX
         	PUSH DX
         	PUSH DI
BEG: 		MOV AL,0B6H 
		OUT 43H,AL 		         	         	         	         	         	         	         	         
         	MOV AL,[SI]          
         	OUT 42H,Al
         	INC SI
         	MOV AH,[SI]
         	OUT 42H,AL         
 		CALL	OPEN
WAITIME: 	 
        	MOV TIME,0FFfFH
DELAY:  	
         	DEC TIME
         	CMP TIME,0
         	JNZ DELAY
         	DEC BX
         	JNZ WAITIME
         	CALL	CLOSE
         	;MOV AL,AH
         	;OUT 61H,AL
         	POP DI
         	POP DX
         	POP CX
         	POP BX
         	POP AX
        	RET
GENSOUND ENDP
OPEN 	PROC 
		IN AL,61H 
		OR AL,00000011B 
		OUT 61H,AL 
		RET 
OPEN 	ENDP 
CLOSE PROC 
		IN AL,61H 
		AND AL,11111100B 
		OUT 61H,AL 
		RET 
CLOSE ENDP 
CODE      ENDS
          END MAIN

⌨️ 快捷键说明

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