学 号:
课 程 设 计
课程名称 题 目 学 院 专 业 班 级 姓 名 指导教师
汇编语言程序设计 乐曲程序的设计与实现 计算机科学与技术学院 计算机科学与技术
2012 年 1 月 3 日
1
目 录
目录
课程设计任务书 .......................................................... 1
1 实验内容、目的 .......................................................................................................................................1
1.1实验内容 ......................................... 1
1.2 实验目的 ........................................ 1
2 设计中使用的关键技术及方法 ??????????????????????2 2.1 位触发方式 ……………………………………………………………………………2
2.2 利用定时器产生声音…………………………………………………………………..3
2.3 扬声器驱动方式????????????????????????4 2.4 主要的发生器件????????????????????????5 2.5 乐曲构成???????????????????????????6 3 设计方案说明 ?????????????????????????????6 3.1 设计思路???????????????????????????6 3.2 程序流程图 ?????????????????????????7 3.3 关键代码设计实现及分析????????????????????8 4 调试过程及实验结果分析????????????????????????11 4.1 调试过程 ??????????????????????????11 4.2 实验结果 ??????????????????????????12 5 设计心得与改进方案 ?????????????????????????13 5.1 心得体会 ??????????????????????????13 5.2 改进方案 ??????????????????????????13 6 参考文献???????????????????????????????14 7 附录 源程序 ?????????????????????????????14 本科生课程设计成绩评定表 ???????????????????????18
课程设计任务书
学生姓名: 专业班级:
指导教师: 工作单位:计算机科学与技术学院
题目: 乐曲程序的设计与实现
初始条件:
理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理
解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编
语言程序的调试方法。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
进一步理解和掌握程序直接控制I/O方式,掌握计算机发声程序的设计。具体的设计任务及要求:
1.采用位触发方式编写程序,使计算机发出音响并演奏乐曲(例如《两只老虎》等)。 1) 进一步理解程序直接控制I/O方式和位触发方式控制声音的工作原理。 2) 一首乐曲是由不同频率和节拍的音调组成,因此控制脉冲的频率和持续时间是编写乐曲程序的
关键。根据已知的音符频率对照表,设置乐曲的频率表和节拍时间表; 3) 编写程序并调试通过。
2.了解定时器的工作原理,掌握利用定时器产生声音的方法,使计算机演奏乐曲(例如《两只老虎》等)。编写程序并调试通过。
在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。
阅读资料: 1)《IBM—PC汇编语言程序设计实验教程》3.1节 2)《IBM—PC汇编语言程序设计(第2版)》10.4节,10.5节
时间安排:
设计安排一周:周1、周2:完成系统分析及设计。
周3、周4:完成程序调试,和验收。 周5:撰写课程设计报告。
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
1
武汉理工大学《汇编语言程序设计》课程设计
乐曲程序的设计与实现
1.实验内容、目的
1.1 实验内容
1.进一步理解和掌握程序直接控制I/O方式,掌握计算机发声程序的设计。具体
的设计任务及要求:
1) 进一步理解程序直接控制I/O方式和位触发方式控制声音的工作原理。 2) 一首乐曲是由不同频率和节拍的音调组成,因此控制脉冲的频率和持续时间是编写乐曲程序的关键。根据已知的音符频率对照表,设置乐曲的频率表和节拍时间表;
3) 编写程序并调试通过。
2.了解定时器的工作原理,掌握利用定时器产生声音的方法,使计算机演奏乐曲(例如《两只老虎》等)。编写程序并调试通过。
1.2 实验目的
汇编语言是计算机能够提供给用户使用的最快而又有效的语言,也是能够用计算机所
有硬件特性并能直接控制硬件的唯一语言。通过这次实验要求我们: 1) 了解通用发生程序。
2) 了解与掌握定时、计数、音乐、频率、时间之间的关系。 3) 学会用发生程序的设计方法 4) 学会用汇编语言编辑音乐程序
通过音乐程序设计熟悉并掌握用汇编语言编程的方法和特点,借此来比较高级语言低级语言的优缺点,以便更好运用各种语言来开发应用软件通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。能用汇编语言熟练的运用三大结构,进一步掌握各个指令的功能,特别是转向指令,能掌握子程序的定义及调用,包括段间及段内调用,以及正确的运用DEBUG
1
武汉理工大学《汇编语言程序设计》课程设计
指令,进一步理解和掌握程序直接控制I/O方式。
2.设计中使用的关键技术及方法
ROM BIOS 中有个BEEP子程序,这能根据BL中组出的时间计数值控制8254定时器,产生持续时间为1个或几个0.5秒,频率为896HZ的声音,我们可以利用并修改BEEP,使其产生任一频率的声音。为此我们需要做两点修改,首先,BEEP程序只能产生896HZ的声音,我们的通用发声程序应能产生任一频率的声音。其次,BEEP产生声音的持续时间(音长)只能是0.5秒的倍数,我们希望声音的持续时间更易于调整,例如可以是10ms的倍数。
我们知道BEEP能将计数值533H送给定时器2产生896HZ的声音的,那么产生其它频率声音的时间计数值应为:
533H×896÷给定频率=123280H÷给定频率 发声程序包括3个步骤:
(1)在8253中的42端口送一个控制字0B6H(10110110B),该控制字对定时器2进行初始化,使定时器2准备接收计数初值。
(2)在8253中的42H端口(Timer2)装入一个16位的计数值(533H×895/频率),以建立将要产生的声音频率。
(3)把输出端口61H的PB0、PB1两位置1,发出声音。
2.1 位触发方式
程序直接控制PPI(8255A可编程序外围接口芯片)的输出控制器(I/O端口为61H)的第一位,使该位按所需的频率进行1和0的交替变化,从而控制开关电路产生一串脉冲波形,这些脉冲波形经放大后驱动扬声器发出声音。如果控制波形的脉宽和长度就可以产生不同频率和不同音长的声音。
扬声器发声通用子程序:
通用发生程序CFSOUND:
cfsound proc near
push dx 保存将要用到的寄存器 push ax
in al,61h mov ah,al
and al.11111100b 关断定时器通道2的门控
2
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库乐曲程序的设计与实现在线全文阅读。
相关推荐: