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

📄 music.asm

📁 开发环境:FASM 功能:听过不要音箱的音乐么(当然也包括耳机之类的罗)
💻 ASM
字号:
;******************************************************
;* 文件名:Music.asm
;* 创建日期:2001.7.5
;* 作者:陈文尧
;* 功能:利用内存驻留在喇叭里播放曲谱
;******************************************************
include system.inc

;******************************************************
;* 以下代码由汇编专家产生,不要随便修改
;******************************************************
.CODE
	ifdef __COM__
		org	100h
	endif
@@Start:
;------------------------------------------------------
; 初始化数据段
;------------------------------------------------------
	InitDS	cs
;------------------------------------------------------
; 调用主函数
;------------------------------------------------------
	call	main
;------------------------------------------------------
; 正常退出,并驻留内存
;------------------------------------------------------
	TSR2	376d ;本程序的.com文件长376Byte

;++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ 从这里开始到@@EndTSR,你可以加入需要驻留的代码和数据
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
new1ch proc near
       dec        byte ptr cs:Count
       jg		@Return
       ;
       pusha
       push		ds
       push		cs
       pop		ds
       ;
       mov		si,Pointer
       mov		bx,[si]
       mov		Count,bl
       add		Pointer,02h    
       cmp        Pointer,MUSIC_END
       jg		@First
       and		Count,3fh
       shr		bx,06h
       LibCall	Sound,bx
@End:
       pop		ds
       popa
@Return: 
       jmp		dword ptr cs:[old1ch]
@First:
       mov		Pointer,offset MUSIC
       mov		Count,24h
       LibCall	NoSound
       jmp		@End
new1ch endp

MUSIC     dw  196*64+2*MULT,262*64+3*MULT,262*64+1*MULT,262*64+2*MULT
          dw  330*64+2*MULT,294*64+3*MULT,262*64+1*MULT,294*64+2*MULT
          dw  330*64+1*MULT,294*64+1*MULT,262*64+4*MULT,330*64+2*MULT
          dw  394*64+2*MULT,440*64+4*MULT,440*64+2*MULT,394*64+3*MULT
          dw  330*64+1*MULT,330*64+1*MULT,262*64+1*MULT,294*64+3*MULT
          dw  262*64+1*MULT,294*64+2*MULT,330*64+1*MULT,294*64+1*MULT
          dw  262*64+3*MULT,230*64+1*MULT,230*64+2*MULT,196*64+2*MULT
          dw  262*64+7*MULT,440*64+2*MULT,394*64+3*MULT,330*64+1*MULT
          dw  330*64+1*MULT,262*64+1*MULT,294*64+3*MULT,262*64+1*MULT
          dw  294*64+2*MULT,440*64+2*MULT,394*64+3*MULT,330*64+1*MULT
          dw  330*64+2*MULT,394*64+2*MULT,440*64+7*MULT,523*64+2*MULT
          dw  394*64+3*MULT,330*64+1*MULT,330*64+1*MULT,262*64+1*MULT
          dw  294*64+3*MULT,262*64+1*MULT,294*64+2*MULT,330*64+1*MULT
          dw  294*64+1*MULT,262*64+3*MULT,230*64+1*MULT,230*64+2*MULT
          dw  196*64+2*MULT,262*64+7*MULT,440*64+2*MULT,394*64+3*MULT
          dw  330*64+1*MULT,330*64+1*MULT,262*64+1*MULT,294*64+3*MULT
          dw  262*64+1*MULT,294*64+2*MULT,440*64+2*MULT,394*64+3*MULT
          dw  330*64+1*MULT,330*64+2*MULT,394*64+2*MULT,440*64+7*MULT
          dw  523*64+2*MULT,394*64+3*MULT,330*64+1*MULT,330*64+1*MULT
          dw  262*64+1*MULT,294*64+3*MULT,262*64+1*MULT,294*64+2*MULT
          dw  330*64+1*MULT,294*64+1*MULT,262*64+3*MULT,230*64+1*MULT
          dw  230*64+2*MULT,196*64+2*MULT,262*64+7*MULT
MUSIC_END =   offset $
MULT      =   08h

Count		db    00h
Pointer	dw    MUSIC_END
old1ch	dd	?

@@EndTSR:
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ 主函数,加入驻留前需要做的代码
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
main	proc
	LibCall		GetVect,1ch
	mov			word ptr old1ch,ax
	mov			word ptr old1ch+02h,dx
	LibCall		SetVect,1ch,<offset new1ch>
	;
	ret
main	endp

;******************************************************
;* 标志程序结束并指定程序入口
;******************************************************
	end	@@Start

⌨️ 快捷键说明

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