资源描述:
《简易电子音乐播放器(微机课设)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、;这是微机课程设计《简易电子音乐播放器》的代码,仅供参考(原谅我的五音不全o(╯□╰)o,不过超级玛丽音乐确实高难度);要求如下:;简易电子音乐播放程序设计;1任务编写一个简易电子音乐播放程序。;2基本要求;1将存储于内存中的音乐数据播出(格式自定义)。;2能够播出21个音阶(低音1~7、中音1~7、高音1~7)。;3扩展要求;1可以播出长短音(分长音、中音、短音)。;2可从文件中读音乐数据(格式自定义)。;////////////////////////////数据段/////////////
2、///////////////DATASEGMENTMSGSHOW1DB0DH,0AH,0DH,0AH;DEFINEBYTEODH,回车,OAH,换行MSGSHOW2DB0DH,0AH,'Thelistofthesongsis:';显示列表DB0DH,0AH,'1---supermario'DB0DH,0AH,'2---twolittletigers'DB0DH,0AH,'q---quit'DB0DH,0AH,'pleasechoosetheoption:$'MSGSHOW3DB0DH,0AH,
3、'somethingwrongwithyourinput!$';ERRORINPUTMSGSHOW4DB0DH,0AH,'continue:$';继续选择MSGSHOW5DB0DH,0AH,'nowthesongisplaying,enjoyyourself!$';正在播放MUSIC_FREQ1DW330,330,330,262,330,393,196;频率表DW262,196,165,221DW248,248,221,196,330,350,393,350,393DW330,262,294,2
4、48,262,196DW165,221,248,248,221,196,330,-1;-1作为结尾判断标示MUSIC_TIME1DW2,2,2,1,1,4,4;节拍表DW2,2,4,4DW2,1,2,2,2,1,1,1,1DW2,1,1,2,4,2DW2,2,1,1,2,1,2MUSIC_FREQ2DW262,294,330,262,262,294,330,262DW330,350,393,330,350,393DW393,441,393,354,330,262,393,441,393,354,
5、330,262DW294,221,262,294,221,-1MUSIC_TIME2DW8DUP(2);dup是重复定义指令,即重复定义8个2DW6DUP(2)DW2DUP(1,1,1,1,2,2)DW6DUP(2)DATAENDS;////////////////////////////////////代码段//////////////////CODESEGMENTSTARTPROCFAR;程序起点ASSUMECS:CODE,DS:DATA;段说明,自己定义的CODE对应代码段,DATA对应数
6、据段MOVAX,DATA;初始化,将段基址装入寄存器MOVDS,AXSHOWMACROM;定义宏用于显示字符串LEADX,M;LEA 取有效地址MOVAH,09H;显示字符串INT21HENDMSHOWMSGSHOW1 ;显示换行回车INPUT:MOVAH,01H;DOS功能调用,从键盘输入INT21HCMPAL,'q';是否退出JZQUIT CMPAL,'1';是否是1JNZNODE1;不是1则调转,再判断是否是2CA
7、LLMUSIC1;是1则播放音乐1JMPNODE3;音乐播放完后显示继续NODE1:CMPAL,'2';是否是2JNZNODE2;不是2则调转,显示错误信息CALLMUSIC2;是2则播放音乐2JMPNODE3;音乐播放完后显示继续NODE2:SHOWMSGSHOW3;显示错误信息SOMETHINGWRONGWITHYOURINPUT!SHOWMSGSHOW4;显示继续JMPINPUT;调转回输入NODE3:SHOWMSGSHOW4;显示继续JMPINPUT;调转回输入QUIT:MOVAH,4C
8、H;退出INT21HSTARTENDP;主程序结束MUSIC1PROCNEAR;内存音乐1,测试音乐PUSHDS;保护现场PUSHAXLEASI,MUSIC_FREQ1;取得音乐1频率有效地址LEABP,DS:MUSIC_TIME1;取得音乐1持续时间有效地址SHOWMSGSHOW5;显示正在播放NODE4:MOVDI,[SI];将频率值一一赋给DICMPDI,-1;检测是否音乐结束JZEND_MUSIC;音乐结束则进行结束处理MOVBX,DS:[BP];音乐未结束则去相应的持续时间值CALLS