汇编音乐课程设计报告
- 格式:doc
- 大小:442.00 KB
- 文档页数:28
《汇编语言程序设计》
课程设计报告
题目: 音乐发声程序
指导老师:
组 长:
成 员:
专 业: 计算机科学与技术
班 级:
2011年6月20日 目 录
一设计任务 ................................................................................................ 1
二设计目的 ................................................................................................ 1
三设计思想 ................................................................................................ 1
四程序流程图 ............................................................................................ 3
五概要设计 ................................................................................................ 4
六详细设计 ................................................................................................ 5
1. 菜单设计 ........................................................................................ 5
2. 通用发生程序设计 ........................................................................ 5
3. 延时程序设计 ................................................................................ 6
4. 模拟频谱程序 ................................................................................ 6
5. 模拟电子琴程序 ............................................................................ 7
七程序代码 ................................................................................................ 9
1. Sound程序代码 ............................................................................. 9
2. Delay程序代码 ...........................................................................10
3 randp程序代码...........................................................................10
4 Cleanmp清屏程序代码 .............................................................. 11
5 Mpa模拟电子琴程序代码 .........................................................12
6 Mpu模拟频谱程序代码 .............................................................14
7 Music总体控制程序代码...........................................................17
八程序调试 .............................................................................................. 24 《汇编语言程序设计》课程设计报告
1 一设计任务
建立一个菜单,以实现以下功能,根据选择的菜单项执行相应的功能。
(1) 编写5首音乐歌曲程序;
(2) 设计选择点播5首音乐歌曲演奏窗口;
(3) 选择数字1-5演奏相对应的歌曲
(4) 选择6进入模拟电子琴程序
(5) 结束音乐歌曲的演奏。
二设计目的
通过课程设计,对汇编语言指令的功能能有较深入的理解,并学会用汇编语言编写声音程序,从而使学生认识到计算机低级语言功能的重要性,同时对计算机硬件的工作原理有较深入的认识。
三设计思想
编写主程序,在主程序中用数字标出各个字功能,当用户从键盘输入某个数字时,就去执行相应功能。当用户输入错误数字时有相应的提示。
乐曲是按照一定的高低、长短和强弱关系组成的音调,在一首乐曲中,每个音符的高低和音长,与频率和节拍有关。要实现乐曲的演奏,可通过调用发声程序来达到输出音乐的效果。在程序中,可以设《汇编语言程序设计》课程设计报告
2 定两个变量分别用来存储音符的频率值和持续的时间。音符的频率可以通过查阅有关资料获得,音符的持续时间根据乐曲的速度及每个音符的节拍数来确定。得到了音频和时间关系,就可以按照乐曲的曲谱将每个音和持续时间定义成两个数据表,然后编写程序依次取出表中的频率和时间值,调用程序发出声音。
可以定义几个频谱数据段,通过调用随机数程序产生随机数,根据产生的随机数来显示相应的频谱模拟音乐播放时的频谱。
另外可以编辑一个小程序来简单模拟电子琴,根据用户的输入调用发声程序来产生对应频率的声音。
《汇编语言程序设计》课程设计报告
3 四程序流程图
开 始
清 屏
显示菜单
等待输入
AL=1?
AL=2?
AL=5?
AL=6? AL=3?
AL=4? 播放军港之夜
播放童年
播放让我们荡起双桨
调用电子琴程序 播放我心永恒
播放歌唱祖国
AL=7? 显示错误警告
结 束 N
N Y
N N N N Y
Y
YY
Y
Y N 《汇编语言程序设计》课程设计报告
4 五概要设计
这个音乐程序大致分为五个部分:
1. 菜单的设计。菜单可以通过定义一个长字符串,通过调用Dos21的9号功能键来实现
2. 5首音乐歌曲的频率与对应时间的数据表。首先要有乐谱,可以根据乐谱中每个音符及节拍确定这首歌曲对应的频率与时间表。
3. 发声程序,这也是这个程序的核心部分。要产生指定频率的声音,可将8253的计数器2设置为方式3,根据声音的频率计算出8253计数值并送入8253计数器2即可。使声音持续一段时间,可以通过一个延时程序来实现。延时程序主要通过检测8255A PB4口的变化来实现。
4. 模拟频谱程序。这主要通过字符串显示和随机数来实现。首先把模拟的频谱定义成几个字符串,然后通过随机数程序来生产随机数,根据生成的随机数来显示对应的频谱。
5. 模拟电子琴程序。这部分主要通过调用发声程序来实现。通过判断用户的输入,产生对应音符的声音。
《汇编语言程序设计》课程设计报告
5 六详细设计
1. 菜单设计
通过定义一个字符串来实现。
MENU 1:JUN GANG ZHI YE
2:TONG NIAN
3:RANG WOMEN DANGQI SHUANGJIANG
4:MY HEART WILL GO ON
5:YI YAN WAN NIAN
6:PLAY THE PANIO
7:EXIT
PLEASE CHIOCE THE NUMBER OF MUSIC
2. 通用发生程序设计
SOUND为以传递过来的频率和节拍数,发出一个音符的频率的子程序。
关键代码分析:
MOV AL, 0B6H
OUT 43H, AL
43H端口为0B6H,选择计数器2,读/写LSB, MSB , 模式3,计数值为二进制数。
MOV DX,12H
MOV AX,34DCH
DIV DI
按照公式,计数值=12348CH÷ f ,商存放在AX中。
OUT 42H, AL
MOV AL, AH
OUT 42H, AL
8253\54的数据总线为8位,而计数值为16位,所以应该分两次传递计数值。
IN AL, 61H
MOV AH, AL
OR AL, 3
OUT 61H, AL
将61H的后两位置1,打开扬声器,使其发声。
WAIT1: CALL DELAY