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

📄 wave.asm

📁 用汇编语言编写的程序
💻 ASM
字号:
TITLE WAVE
STACK SEGMENT PARA STACK 'STACK'
	DB 64 DUP('STACK...')
STACK ENDS

DSEG SEGMENT
MUS_FREQ DW 100
		DW 392,330,349,392,330,349,392,196,220,247,262,294,330,349
		DW 330,262,294,330,165,175,196,220,196,175,196,262,247,262
		DW 220,262,247,220,196,175,196,175,165,175,196,220,247,262
		DW 220,262,247,262,247,262,247,220,247,262,294,330,349,392

		DW 392,330,349,392,330,349,392,196,220,247,262,294,330,349
		DW 330,262,294,330,165,175,196,220,196,175,196,262,247,262
		DW 220,262,247,220,196,175,196,175,165,175,196,220,247,262
		DW 220,262,247,262,247,220,247,262,294,262,247,262,220,247
		DW 262
		DW -1
MUS_TIME	DW 5
			DW 50,2 DUP(25),50,10 DUP(25)
			DW 50,2 DUP(25),50,10 DUP(25)
			DW 50,2 DUP(25),50,10 DUP(25)
			DW 50,2 DUP(25),50,10 DUP(25)
			
			DW 50,2 DUP(25),50,10 DUP(25)
			DW 50,2 DUP(25),50,10 DUP(25)
			DW 50,2 DUP(25),50,10 DUP(25)
			DW 50,2 DUP(25),50,10 DUP(25)
			DW 200
X		DW 0
DSEG ENDS
			
CSEG SEGMENT PARA 'CODE'
	ASSUME CS:CSEG, SS:STACK, DS:DSEG
MUSIC PROC FAR
	MOV AX,DSEG
	MOV DS,AX
	
	MOV AX,012H			;定义分辨率
	INT 10H
	
	LEA SI,MUS_FREQ
	LEA BP,DS:MUS_TIME
FREQ:
	MOV DI,[SI]
	CMP DI,-1
	JE END_MUS
	MOV BX,DS:[BP]
	
	;MOV AX,12H			;清屏
	;INT 10H   
 
	CALL WAVE
	CALL SOUNDF
	
	ADD SI,2
	ADD BP,2
	JMP FREQ
END_MUS:
	MOV AX,4C00H
	INT 21H
MUSIC ENDP

WAVE PROC
	PUSH CX
	PUSH DX
	
	PUSH AX
	PUSH CX
	MOV CL,5
	MOV AX,BX
	DIV CL
	MOV BX,AX
	POP CX
	POP AX
	
	
	ADD X,BX
	
	MOV CX,BX
	
	MOV AX,[SI]		;颜色
	MOV DX,[SI]
	NOT DX
	ADD DX,480
AGAIN:
	PUSH CX
	NOT CX
	ADD CX,X
    MOV AH,0CH
	INT 10H
	POP CX
	LOOP AGAIN

	POP DX
	POP CX
	RET
WAVE ENDP

SOUNDF PROC
	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,3
	OUT 61H,AL
WAIT1:
	MOV CX,3663h			;延迟时间
	CALL WAITF
	DEC BX
	JNZ WAIT1
	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

CSEG ENDS
	END MUSIC		

⌨️ 快捷键说明

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