汇编音乐课程设计报告

  • 格式: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