音乐演奏汇编语言程序的设计说明

上传人:壹****1 文档编号:476698169 上传时间:2023-09-06 格式:DOC 页数:12 大小:88.50KB
返回 下载 相关 举报
音乐演奏汇编语言程序的设计说明_第1页
第1页 / 共12页
音乐演奏汇编语言程序的设计说明_第2页
第2页 / 共12页
音乐演奏汇编语言程序的设计说明_第3页
第3页 / 共12页
音乐演奏汇编语言程序的设计说明_第4页
第4页 / 共12页
音乐演奏汇编语言程序的设计说明_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《音乐演奏汇编语言程序的设计说明》由会员分享,可在线阅读,更多相关《音乐演奏汇编语言程序的设计说明(12页珍藏版)》请在金锄头文库上搜索。

1、.目录音乐演奏汇编语言程序设计1前言11 总体方案论证11.1功能分析11.2方案设计说明2音乐的代码化2音乐演奏的硬件配合2音乐演奏的软件设计22.程序流程图设计及其说明32.1主流程图说明32.2音乐播放流程图说明32.3字符输入及执行操作流程图说明33.软件设计关键问题或程序段落的说明63.1字符串显示程序63.2数据段与外观设计程序63.3音乐演奏84.程序调试说明、结果记录及分析85.课程设计收获及心得体会10参考文献11附录12源程序代码12音乐演奏汇编语言程序设计前言随着科技的高速发展,计算机已经经过了好几代的更新,然而计算机的运行的基本原理依然没有改变的。而今,我们通过一个学期

2、的学习,已经初步了解了计算机的基本结构和原理,并且已经学会了用汇编语言进行基本的程序编写。而本次课程设计的主要目的就是巩固所学过的知识,用汇编语言熟练地运用三大结构,进一步掌握一些指令的功能、掌握子程序的定义及调用和INT 21H、INT10H中断的使用,同时熟练运用通用寄存器和堆栈来进行编写一个完整的具有某种特定功能的程序。在本次课程设计中,考察了我们编程的技巧、运用Debug动态调试工具进行程序的调试的能力。同时,本道设计题目还检查了学生对汇编语言这门课程的基本知识的掌握程度。只有掌握汇编语言基本编程方法,掌握程序各部分功能及其相互联系、相互作用,并要熟悉基本的音乐知识,才能独立的把程序写

3、出来,才能把程序写好。1 总体方案论证1.1功能分析在此次设计中,第一个重点就是音乐播放的控制,要想能按照正常的频率和节拍播放出音乐,就需要合理的设计出给蜂鸣器的频率值和播放的时间。这样就能比较准确的把音乐按一定的节奏播放出来。如果我们要想加快播放速度,我们可以改变每一节拍的播放时间,如果我们改变了播放的频率值,那么歌曲也就相应的改变了。第二个重点就是我们要能够根据键盘上输入的数据,合理的做出相应的应答操作,特别是在演奏过程中,我们还要求实时的检测键盘是否有输入,同时还要不能影响音乐播放的效果,并且由于我们对于键盘的输入并非是外部中断,因此实时的扫描键盘同时播放音乐的实现有一定的难度。1.2方

4、案设计说明我们根据上面的功能分析,同时通过查阅相关资料,了解了计算机的内部结构的同时还清楚的理解了DOS中的21H和10H中断的调用,因此我们设计出如下方案:音乐的代码化我们首先收集了2首简单的歌曲,同时还带有相应的音谱,通过查阅相关的音乐资料,了解了节拍的概念和各音符所对应的频率,而后我们把每一首歌曲都转化成两个数据段,一个是把各个音符翻译成相应的频率值,第二是把相应的节拍转化成对应的时间值,来控制播放每一个音符所对应的时间。这样我们在播放歌曲时,同时调用频率值和时间值就可以把相应的歌曲播放出来了。音乐演奏的硬件配合我们了解到在计算机的主板上有8253、8255和蜂鸣器,同时了解到蜂鸣器的驱

5、动是通过8255和8253共同控制的,我们通过对8253的通道2进行写数据来控制蜂鸣器的声音频率,再通过8255来控制播放时间的长短,就通过这样的巧妙配合来达到播放完整音乐的效果。音乐演奏的软件设计软件设计是本设计的重点,在软件设计中,我们要给8253和8255写数据,同时还要检测键盘输入的值,并根据输入的值,执行相应的代码来控制音乐的播放。首先我们在一开始先显示音乐菜单,然后调用DOS中21H 的07中断来接收键盘上的数据,在此过程中,程序在等待中,直到键盘上有键按下,程序才进行相应的操作。当键盘输入一个值后,我们首先判断输入的值是否为e,如果是,那就退出程序,如果不是,我们再检测输入的数是

6、否在1-2之间,如果是,那就调用相应的播放音乐的程序,否则无动作。在音乐播放中,我们要实时地扫描键盘是否有值输入,如果用DOS中21H 的01中断肯定是不行的,因为执行这个中断程序会等待,无法继续播放音乐。因此我们采用中断21H中的0bH,这个中断不会等待,只会检查标准输入设备上是否有字符可读。然后我们通过检测AL中的值是否为0FFH,来判断键盘是否有值输入。如果键盘上有键输入,那么AL中会返回一个0FFH的值,否则就会返回00H。如果有,我们再判断这个输入的值是否为p,如果是,我们就停止音乐的播放,否则继续播放音乐,由于程序运行非常快,这样我们就不会感觉到音乐有停顿现象。实现和音乐演奏的同时

7、实时扫描键盘的功能。当音乐开始播放后,若不输入任何指令,则该歌曲一直循环下去。在音乐暂停后,按c值继续音乐播放,按e值退出,按1或2切歌。然后我们调用DOS中21H 的07中断来接收键盘上的数据,在此过程中,程序在等待中,直到键盘上有键按下,然后我们按输入的数进行相应的操作。2.程序流程图设计及其说明在此次设计中,我们包括了三个流程图,一个主流程图和两个子流程图,具体如下所示:2.1主流程图说明在主流程图的设计中,我们首先显示输入提示,然后从键盘中输入一个字符,如果那个字符不是1、2或者e,那么就继续等待,否则就要做一些操作了。如果这个是e,那么就结束程序,如果在1-2之间,那么就调用音乐播放

8、程序。2.2音乐播放流程图说明在音乐播放流程图中,我们设计执行播放相应的歌曲的操作,同时实时的检测键盘的输入。如果键盘有输入,就调用字符输入及执行操作程序。否则就继续播放歌曲。2.3字符输入及执行操作流程图说明在这个流程图中,我们设计了它具有输入字符同时检测的功能。如果我们检测到输入的字符不是p,那么就重新返回到音乐播放流程图中,继续播放音乐,否则就暂停播放音乐。同时等待字符再输入。如果输入的字符是c,那么就继续播放歌曲,如果输入的字符是e,那么就退出程序。开始判断输入的数是否为e提示输入选择显示歌曲菜单是否判断输入的数是否在12之间结束判断是否有键输入播放相应歌曲调用DOS中断扫描键盘缓冲区

9、判断是否播放完否是是调用键值输入和执行操作程序否循环播放该歌曲否是图音乐播放流程图调用播放歌曲程序图主流程图图 字符输入及执行操作流程图否是调用播放歌曲程序调用播放歌曲程序判断输入的值是否为E或e返回主程序,显示音乐菜单,提示输入判断输入的值是否为C或c是是否暂停播放音乐显示提示输入调用播放歌曲程序结束图字符输入及执行操作流程图是否否判断输入的值是否为e调用播放歌曲程序是判断输入的值是否为c等待按键输入是暂停播放音乐否判断输入值是否为p接受键盘缓冲区里的键值3.软件设计关键问题或程序段落的说明3.1字符串显示程序disp macro message ;用来调用显示字符串的宏mov dx,off

10、set messagemov ah,9int 21hendm在这个宏定义中我们调用了一个DOS中21H 的09H中断,此中段的功能是在屏幕上显示一串字符。3.2数据段与外观设计程序stack segment para stack stack db 100 dupstack endsdata segmentmenu1 db *songs menu*,0ah,0dh,$menu2 db * 1.merry *,0ah,0dh,$menu3 db * 2.star *,0ah,0dh,$menu4 db *,0ah,0dh,$menu5 db p:pause c:continue e:exit,0a

11、h,0dh,$designers db designed by tanwenan renzhipeng linjian,0ah,0dh,$school db WHUT Electrical engineering and automation 1105,0ah,0dh,$merry_frequency dw 330,294,262,294,330,330,330,294,294,294,330,392,392dw 330,294,262,294,330,330,330,330,294,294,330,294,262,0merry_timedw 10000,10000,10000,10000,1

12、0000,10000,50*400,10000,10000,20000,10000,10000,20000dw 10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,40000star_frequency dw 262,262,392,392,440,440,392,349,349,330,330,294,294,262 dw 2 dup dw 262,262,392,392,440,440,392,349,349,330,330,294,294,262,0star_time dw 3 dup6 dup,

13、50*400,6 dup,50*400data endscode segment assume cs:code,ds:data,ss:stackstartmain:mov ax,data mov ds,ax mov ax,3 ;bios 0号调用,设置为80*25彩色 int 10h mov al,0 ;bios 6号调用,清屏 mov ah,6 int 10h mov dx,0819h ;bios 2号调用,设置光标位置 mov ah,2 int 10h disp menu1 ;显示菜单 mov dx,0919h mov ah,2 int 10h disp menu2 mov dx,0a19h mov ah,2 int 10h disp menu3 mov dx,0b19h mov ah,2 int 10h disp menu4 mov dx,0c19h mov ah,2 int 10h disp menu5 mov dx,0d15h mov ah,2 int 10h mov ah,09 ;bios 9号调用,设置颜色为红色 mov bl,0ch mov cx,39

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号