乐曲程序的设计与实现-汇编.doc
《乐曲程序的设计与实现-汇编.doc》由会员分享,可在线阅读,更多相关《乐曲程序的设计与实现-汇编.doc(20页珍藏版)》请在咨信网上搜索。
1、学 号: 0120910340913课 程 设 计课程名称汇编语言程序设计题 目乐曲程序的设计与实现学 院计算机科学与技术学院专 业计算机科学与技术班 级0909班姓 名王世创指导教师伍新华2011年12月30日目 录课程设计任务书11、实验内容及要求12、实验原理12.1 通用发声程序原理12。2 乐曲的频率和节拍33、方案设计及说明4 3。1 设计实现及功能4 3。2 流程图44、详细设计6 4。1 程序段说明64.2 主要的宏和过程实现6 4。2。1 DISPLAY显示宏。.。.。.。.。.。.。.。.。.。.6 4。2。2 ADDRESS显示宏。.。.。.。.。.。.。.。.。.。.。
2、.。.。.6 4。2。3 MUSIC显示宏.。.。.。.。.。.。.。.。.。.。.。.。7 4。2.4 GENSOUND通用发声程序。.。.。.。.。.。.。.。.。.。.。8 4。2。5 WAITF延时程序。.。.。.。.。.。.。.。.。.。.9 4。2。5 EXIT退出。.。.。.。.。.。.。.。.。.。.105、调试过程及实验结果分析10 5。1 调试过程10 5。5实验结果116、设计心得与改进方案12 6。1注意事项12 6。2 改进方案13 6。3 心得体会137、参考文献138、程序清单14课程设计任务书学生姓名: 王世创 专业班级: 计算机科学与技术学院0909 指导教师
3、: 伍新华 工作单位:计算机科学与技术学院 题目: 乐曲程序的设计与实现初始条件:理论:完成了汇编语言程序设计课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。实践:完成了汇编语言程序设计的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)进一步理解和掌握程序直接控制I/O方式,掌握计算机发声程序的设计.具体的设计任务及要求:1采用位触发方式编写程序,使计算机发出音响并演奏乐曲(例如两只老虎等)。1) 进一步理解程序直接控制I/O方式和位触发方式
4、控制声音的工作原理。2) 一首乐曲是由不同频率和节拍的音调组成,因此控制脉冲的频率和持续时间是编写乐曲程序的关键.根据已知的音符频率对照表,设置乐曲的频率表和节拍时间表;3) 编写程序并调试通过.2了解定时器的工作原理,掌握利用定时器产生声音的方法,使计算机演奏乐曲(例如两只老虎等)。编写程序并调试通过.在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书.阅读资料:1)IBMPC汇编语言程序设计实验教程3。1节2)IBMPC汇编语言程序设计(第2版)10.4节,10。5节时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成程序调试,和验
5、收。周5:撰写课程设计报告.指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日武汉理工大学汇编语言程序设计课程设计乐曲程序的设计与实现1实验内容及要求1进一步理解和掌握程序直接控制I/O方式,掌握计算机发声程序的设计。具体的设计任务及要求:1) 进一步理解程序直接控制I/O方式和位触发方式控制声音的工作原理。2) 一首乐曲是由不同频率和节拍的音调组成,因此控制脉冲的频率和持续时间是编写乐曲程序的关键。根据已知的音符频率对照表,设置乐曲的频率表和节拍时间表;3) 编写程序并调试通过。2了解定时器的工作原理,掌握利用定时器产生声音的方法,使计算机演奏乐曲(例如两只老虎等)。编写程序并
6、调试通过2。实验原理2。1 通用发声程序原理 PC机发声系统以8254的2号计数器为核心.系统初始化时,2号计数器I作在“方波发生器”方式,初值为二进制数,,写入顺序为先低后高,CLK2为1193182MHz,当计数初值为533H时,OUT2输出的方波大约为900Hz,经过简单的滤波之后,送至扬声器。改变1。4号计数器的计数初值就可以使扬声器发出不同频率的音响。ROM BIOS 中有个BEEP子程序,这能根据BL中组出的时间计数值控制8254定时器,产生持续时间为1个或几个0。5秒,频率为896HZ的声音,我们可以利用并修改BEEP,使其产生任一频率的声音。为此我们需要做两点修改,首先,BEE
7、P程序只能产生896HZ的声音,我们的通用发声程序应能产生任一频率的声音。其次,BEEP产生声音的持续时间(音长)只能是0.5秒的倍数,我们希望声音的持续时间更易于调整,例如可以是10ms的倍数.我们知道BEEP能将计数值533H送给定时器2产生896HZ的声音的,那么产生其它频率声音的时间计数值应为:533H896给定频率=123280H给定频率发声程序包括3个步骤: (1)在8253中的42端口送一个控制字0B6H(10110110B),该控制字对定时器2进行初始化,使定时器2准备接收计数初值.(2)在8253中的42H端口(Timer2)装入一个16位的计数值(533H895/频率),以
8、建立将要产生的声音频率。(3)把输出端口61H的PB0、PB1两位置1,发出声音.对于发音部分。PC机上的大多数输入/输出(I/O)都是由主板上的8255(或8255A)可编程序外围接口芯片(PPI)管理的.PPI包括3个8位寄存器,两个用于输入功能,一个用于输出功能.输入寄存器分配的I/O端口号为60H和62H,输出寄存器分配的I/O端口号为61H。由PPI输出寄存器中的0、1两位来选择扬声器的驱动方式.连接到扬声器上的是定时器2,从上图可以看到,GATE2与端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使定时器2可以在模式3(方波)下工作。定时器2的OUT2与端口61H的P
9、B1通过一个与门与扬声器的驱动电路相连.当PB1=1时,允许OUT2的输出信号到达扬声器电路。因此,只有PB0和PB1同时为“1时,才能驱动扬声器地声。通过以下指令实现: IN AL,61H OR AL,3 OUT 61H,AL 上面的指令用以打开扬声器,如要关闭扬声器时则为: AND AL,0FCH OUT 61H,AL 当从8255中采集到输入的数据时,需要确定相应的频率,所以在软件编程时要建立一个数据表: TABLE DW 493,440,392,349,329,293,261 把相应的频率送到一个寄存器上,通过公式: 计数值=533H896 f=12348CH f 算出计数值,再把算得
10、的计数值送给8253,就可产生所要频率的方波.在把计数值送8253前,必须先把8253进行初始化: MOV AL,0B6H OUT 43H,AL 使其选用通道2,工作在方式3下。就整个电路而言,接好电路后,通过软件编程不断地采集从8255口中输入的信号,而8个开关都接在8255的A口上,只要有开关按下,就会采集到一个数据,根据这个数据与事先编好的表对应,得到一个计数值,把这个计数值送给8253的通道2,8253的通道2工作的方式3下,这样就可以产生满足频率要求的发声方波。这个方波经驱动放大就可以使扬声器发出相应的声音.所以8255在这里完成两个任务,它不仅从A口中采集到数据,而且B口的PB1和
11、PB0两个位要控制发声.8253的主要任务就是产生所要求发声的不同频率的方波。2。2 乐曲的频率和节拍 乐曲是按照一定的高低、长短、强弱组成的音调。在一首乐曲中,每个音符的音高和音长和频率和节拍有关。每个音符的频率值和持续时间是乐曲程序发声需要的两个必要数据.高音阶从中C(263)到高C(523), 各个音阶对应的频率如下所示: DW 263 - C DW 294 - D DW 330 - E DW 349 - F DW 392 - G DW 440 - A DW 494 - B DW 523 - C如果知道了乐曲的曲谱,就可以将每个音符的频率和持续时间定义为两个数据表,然后通过调用子程序将表
12、中数据取出,通过扬声器发声.例如MERRY CHRISTMAS频率表和节拍表如下所示:CHST_F dw 7 dup(330),392,262,294,330,4 dup(349),2 dup(330),330,294,294,262,294,392 dw 7 dup(330),392,262,294,330,4 dup(349),2 dup(330),392,392,349,294,262,0 CHST_T dw 2 dup(25,25,50),4 dup(25),100,2 dup(25,25,50) dw 4 dup(25),2 dup(50),2 dup(25,25,50) dw 4
13、dup(25),100,2 dup(25,25,50),4 dup(25),100其中,CHST_F为频率表,CHST_T为节拍表,两个表中的数据一一对应,每一组代表着乐曲中的一个音符,频率表中以0作为结束的标志。3。方案设计及说明3。1 设计实现及功能了解了乐曲演奏的原理,就可以开始设计方案. 首先,明确整个程序的结构及各个程序段的结构和功能,然后设计流程图.按照要求,程序需要完成的功能如下所示:1. 程序需要通过定时器原理完成播放乐曲的功能,这是最基本的功能.2. 程序应该有判断用户输入是否符合规定,如果输入不正确,应该有所提示。并且能再次输入。3。2 流程图开始显示提示信息接收键盘输入是
14、“Q”?是“A”?是“B”?退出程序将音乐节拍频率地址导入ADDRESS调用MUSIC,播放音乐显示错误提示是是是否否否图表 Error! Bookmark not defined. 主程序流程图说明:在进入主界面的时候有3个选项,分别是 A:music:Merry Christmas B:music:the boat on Taihu lake Q: exit 通过选择不同的选项进入其子界面来实现不同的功能。4.详细设计41 程序段说明1) DATA为数据段,其中存放在程序中所要显示的提示选择信息,还有乐曲的频率表和节拍表,和键盘控制发声对应的音符表.2) CODE为代码段,由于在整个程序中
15、各个子程序都定义为NEAR,所以只需要有一个代码段,各个子程序的定义及实现都放在其中.3) STACK为长度为200的堆栈4。2主要的宏和过程的实现4.2。1 DISPLAY显示宏为将事先定义的数据段字符串显示在屏幕上,定一个参数为b的宏。将b的地址传到DX。随后调用DOS09号功能调用.将字符串显示到屏幕。调用DISPLAY的实例为: DISPLAY INFO1 DISPLAY INFO2 DISPLAY INFO3 DISPLAY MUSLIST在此段代码中,程序显示提示作用的字符串和歌曲列表。DISPLAY宏具体实现如下:DISPLAY MACRO b LEA DX,b MOV AH,9
16、 INT 21H ENDM4.2。2 ADDRESS音乐地址宏歌曲包含节拍和频率。此处定义的音乐地址宏包含两个参数,将歌曲频率地址导入SI将歌曲节拍导入BP。当选择不同的歌曲时,主程序调用该宏,将用户要求的歌曲的频率和节拍导入,以便在MUSIC中实现发声。音乐地址宏实现如下:ADDRESS MACRO A,B LEA SI,A LEA BP,DS:B ENDM4.2。3 MUSIC宏在ADDRESS中,程序已经将歌曲的首个频率地址和首个节拍地址分别导入SI、BP.为了检测歌曲是否结束,在MUSIC中,首先将SI传递到DI,DI与1相减,如等于0,则得出该频率定义为1 。在歌曲频率表定义中将-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 乐曲 程序 设计 实现 汇编
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。