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

📄 play_mario.asm

📁 汇编语言编写的小程序
💻 ASM
字号:
TITLE MUSIC --A MUSIC OF 'MARIO'

STACK SEGMENT PARA STACK 'STACK'
	DB 64 DUP('STACK...')
STACK ENDS

DSEG SEGMENT
MUS_FREQ DW 100
		DW 165,175,196,220,247,262,294,294,294,330,349
		
		DW 196,330,311,330,196,220,247,262,294
		DW 330,311,349,330
		
		DW 196,294,277,294,196,220,247,262,277
		DW 294,196,349,330
		
		DW 196,392,392,392,392,440,392
		DW 349,349,349,349,392,349
		DW 330,220,247,349,330,330,330,247,262
		
		DW -1
	
MUS_TIME	DW 5
			DW 50,50,50,50,50,50,25,25,50,50,125
			
			DW 25,150,150,175,25,25,25,25,25
			DW 150,100,50,275
			
			DW 25,150,150,175,25,25,25,25,25
			DW 150,100,50,275
			
			DW 25,150,150,150,50,75,25
			DW 150,150,150,50,75,25
			DW 150,50,50,50,25,25,50,50,150
			
			
DSEG ENDS
			
CSEG SEGMENT PARA 'CODE'
	ASSUME CS:CSEG, SS:STACK, DS:DSEG

MUSIC PROC FAR
	MOV AX,DSEG
	MOV DS,AX
	LEA SI,MUS_FREQ
	LEA BP,DS:MUS_TIME
FREQ:
	MOV DI,[SI]
	CMP DI,-1
	JE END_MUS
	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
	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,2663			;延迟时间
	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 + -