音乐演奏程序设计.docx

上传人:b****7 文档编号:16251357 上传时间:2023-07-12 格式:DOCX 页数:24 大小:168.67KB
下载 相关 举报
音乐演奏程序设计.docx_第1页
第1页 / 共24页
音乐演奏程序设计.docx_第2页
第2页 / 共24页
音乐演奏程序设计.docx_第3页
第3页 / 共24页
音乐演奏程序设计.docx_第4页
第4页 / 共24页
音乐演奏程序设计.docx_第5页
第5页 / 共24页
音乐演奏程序设计.docx_第6页
第6页 / 共24页
音乐演奏程序设计.docx_第7页
第7页 / 共24页
音乐演奏程序设计.docx_第8页
第8页 / 共24页
音乐演奏程序设计.docx_第9页
第9页 / 共24页
音乐演奏程序设计.docx_第10页
第10页 / 共24页
音乐演奏程序设计.docx_第11页
第11页 / 共24页
音乐演奏程序设计.docx_第12页
第12页 / 共24页
音乐演奏程序设计.docx_第13页
第13页 / 共24页
音乐演奏程序设计.docx_第14页
第14页 / 共24页
音乐演奏程序设计.docx_第15页
第15页 / 共24页
音乐演奏程序设计.docx_第16页
第16页 / 共24页
音乐演奏程序设计.docx_第17页
第17页 / 共24页
音乐演奏程序设计.docx_第18页
第18页 / 共24页
音乐演奏程序设计.docx_第19页
第19页 / 共24页
音乐演奏程序设计.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

音乐演奏程序设计.docx

《音乐演奏程序设计.docx》由会员分享,可在线阅读,更多相关《音乐演奏程序设计.docx(24页珍藏版)》请在冰点文库上搜索。

音乐演奏程序设计.docx

音乐演奏程序设计

题目:

音乐演奏程序设计

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1.使用汇编语言设计一个在计算机上运行的音乐演奏程序。

2.屏幕显示钢琴图像。

3.实现以下附加功能:

按“D”键,加快播放速度,按“E”键,降低播放速度。

4.按"X"鍵,退出。

5.撰写课程设计说明书。

内容包括:

摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:

设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

时间安排:

12月30日-----12月31日查阅资料及方案设计

1月2日-----1月3日编程

1月6日调试程序

1月7日-----1月8日撰写课程设计报告

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

摘要

汇编语言(AssemblyLanguage)是面向机器的程序设计语言。

在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。

使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。

因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。

使用汇编语言,可以访问所有能够被访问的软、硬件资源。

使用的编译软件是masmforwindows,MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32asm,是Windows下开发汇编的利器。

它与Windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在Windows下进行开发。

关键词:

汇编语言、MASM、DOS环境

 

目录

1设计说明......................................................1

2程序设计......................................................1

2.1设计思路分析..............................................1

2.2程序设计流程图............................................1

2.3程序代码..................................................3

3程序的调试与编译..............................................9

3.1调试程序..................................................9

3.2运行程序.................................................10

4心得体会.....................................................12

参考文献.......................................................14

 

音乐演奏程序设计

1设计说明

所设计的系统使用了汇编语言设计一个在计算机上可运行的音乐演奏程序。

屏幕会显示显示一钢琴琴键的图像。

并且按“D”键,会加快音乐播放速度,按“E”键,会降低音乐播放速度。

如果按"X"鍵,则会退出音乐播放程序。

2程序设计

2.1设计思路分析

钢琴键盘的绘制这部分主要实现画钢琴键盘键身的功能。

它是由一个个白色的长方块构成的,我们需要用BIOS调用编织线使程序。

显示适配器都自带显示服务的BIOS,利用它所提供的BIOS调用来编写程序,对于我们编程应用者来说是透明的,我们只需要调用显示驱动程序INT10H。

钢琴主要是由矩形、直线等规则几何形状构成,可以采用文本方式,也将屏幕设置成图形显示方式,通过画点、画线等基本程序完成钢琴的绘制。

通过设定白键和黑键的起始坐标,来改黑、白键的长度和相对位置从而完成绘制。

加快播放速度与降低播放速度是在不同三个段A0、A1、A2定义播放速度变量RATE的不同值,按下A正常播放跳转到A,当要实现附加功能时按下D或者E的时候会相应跳转到A1、A2使得音乐以不同的速度播放,从而实现降低音乐播放速度或者提高音乐播放速度的功能。

 

2.2程序设计流程图

音乐模块流程图:

YN

N

NY

Y

Y

N

Y

N

Y

2.3程序代码

DATASEGMENT

FLAGDB1

RATEDW?

;播放速度变量

INFO1DB0DH,0AH,'WelcomeToMusic!

$'

INFO2DB0DH,0AH,'PleaseenterAtostartmusic!

$'

INFO3DB0DH,0AH,'OPTIONS:

$'

INFO4DB0DH,0AH,'WRONGORDER!

$'

INFO5DB0DH,0AH,'PLEASEINPUTAGAIN!

$'

MUSLISTDB0DH,0AH,'A:

START'

DB0DH,0AH,'X:

ESC'

DB0DH,0AH,'D:

HighSpeed'

DB0DH,0AH,'E:

LowSpeed'

DB0DH,0AH,'$';提示语

;音乐一------------------------------------------------------------

MUS_FREG1DW262,262,294,262,349

DW330,262,262,294,262

DW392,349,262,262,523

DW440,349,262,262,466

DW466,440,262,392,349,-1

MUS_TIME1DW50,50,100,100,100

DW100,100,50,50,100,100

DW100,100,100,50,50,100

DW100,100,100,100,100,50

DW50,100,100,100,100,100

DATAENDS

STACKSEGMENT

DB400DUP('STACK')

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

;主程序

MOVAH,0

MOVAL,12H;图形方式

INT10H

MOVAH,6

MOVBH,9;蓝色色背景

MOVAL,0;清屏

MOVCH,0

MOVCL,0

MOVDH,29

MOVDL,79

INT10H

MOVSI,200

MOVDX,400

REDRAW:

MOVDI,26

ADDDI,46

MOVCX,26

DECDX

CMPDX,SI

JBNEXT

MOVBL,0

PAINT:

MOVAH,0CH

MOVAL,7;印出点的颜色白色->AL,画白色琴键

MOVBH,0;页号

INT10H

INCCX

CMPCX,DI

JBEPAINT

ADDDI,74

ADDCX,28

INCBL

CMPBL,7

JBEPAINT

JMPREDRAW

NEXT:

MOVSI,200

MOVDX,300

REDRAW1:

MOVDI,63

ADDDI,46

MOVCX,63

DECDX

CMPDX,SI

JBLL

MOVBL,0

PAINT1:

MOVAL,0;印出点的颜色黑色->AL,画黑色琴键

MOVAH,0CH

MOVBH,0

JEJUMP

INT10H

JUMP:

INCCX

CMPCX,DI

JBEPAINT1

ADDDI,74

ADDCX,28

INCBL

CMPBL,7

JBEPAINT1

JMPREDRAW1

LL:

MOVAX,DATA

MOVDS,AX

CALLMUSIC_PLAY;音乐播放子程序

MUSIC_PLAYPROC

SHOWMACROb;定义一个宏显示字符串

LEADX,b

MOVAH,9

INT21H

ENDM

ADDRESSMACROA,B;音乐地址宏

LEASI,A

LEABP,DS:

B

ENDM

SHOWINFO1

SHOWINFO2

SHOWINFO3

SHOWMUSLIST;提示语

INPUT:

MOVAH,01H

INT21H

CMPAL,'X'

JZRETU;按下为‘X’则退出dos

CMPAL,'A';按下为‘A’则播放音乐

JZA0;是则跳到A0

SHOWINFO4

SHOWINFO5

JMPINPUT;否则提示输入错误,重新开始

CMPAL,'E';按下为‘E’则减速播放音乐

JZA1;是则跳到A1

CMPAL,'D';按下为‘D’则加速播放音乐

JZA2;是则跳到A2

A0:

ADDRESSMUS_FREG1,MUS_TIME1

MOVRATE,4000;设置正常播放速度

CALLMUSIC

JMPINPUT

A1:

ADDRESSMUS_FREG1,MUS_TIME1

MOVRATE,10000;设置减慢播放速度

CALLMUSIC

JMPINPUT

A2:

ADDRESSMUS_FREG1,MUS_TIME1

MOVRATE,1000;设置加快播放速度

CALLMUSIC

JMPINPUT

RETU:

MOVAH,4CH

INT21H

AGAIN:

SHOWINFO5

JMPINPUT

EXIT:

ADDRESSMUS_FREG1,MUS_TIME1

MOVRATE,4000;设置正常播放速度

CALLMUSIC

JMPAGAIN

JMPINPUT

RET

MUSIC_PLAYENDP

;发声

GENSOUNDPROCNEAR

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHDI

MOVAL,0B6H;开扬声器

OUT43H,AL

MOVDX,12H

MOVAX,348CH

DIVDI

OUT42H,AL

MOVAL,AH

OUT42H,AL

INAL,61H

MOVAH,AL

ORAL,3

OUT61H,AL

WAIT1:

MOVCX,RATE;设置播放速度

CALLWAITF

DELAY1:

DECBX

JNZWAIT1

MOVAL,AH

OUT61H,AL

POPDI

POPDX

POPCX

POPBX

POPAX

RET

GENSOUNDENDP

WAITFPROCNEAR

PUSHAX

WAITF1:

INAL,61H

ANDAL,10H

CMPAL,AH

JEWAITF1

MOVAH,AL

LOOPWAITF1

POPAX

RET

WAITFENDP

MUSICPROCNEAR

PUSHDS

SUBAX,AX

PUSHAX

FREG:

MOVDI,[SI];获取频率值

CMPDI,-1;音乐播放结束判断

JEEND_MUS

MOVBX,DS:

[BP]

CALLGENSOUND;播放一个频率

ADDSI,2

ADDBP,2;获取下一频率值,及其播放时间

MOVAH,0BH;判断键盘是否有键按下

INT21H

CMPAL,0FFH

JEINT9;有键按下则转去执行该指令

JMPFREG;无键按下则继续读取下一个频率值

END_MUS:

RET

INT9:

PUSHF

PUSHAX

PUSHDS

PUSHES

PUSHCS

POPDS

PUSHCS

POPES

INAL,60H;从键盘获取该键值ASCII码

MOVAH,01H

INT21H;读取并保存到AL中

CMPAL,'X';若为‘X’则退出dos操作界面

JZX0

CMPAL,'D'

JZA2

CMPAL,'E'

JZA1

;否则提示输入错误,重新开始

INT9_QUIT:

POPES

POPDS

POPAX

POPF

JMPFREG

A1:

POPES

POPDS

POPAX

POPF

ADDRESSMUS_FREG1,MUS_TIME1

MOVRATE,10000;设置减慢播放速度

CALLMUSIC

JMPINPUT

A2:

POPES

POPDS

POPAX

POPF

ADDRESSMUS_FREG1,MUS_TIME1

MOVRATE,1000;设置加快播放速度

CALLMUSIC

JMPINPUT

INPUT:

MOVAH,01H

INT21H

CMPAL,'X'

JZRETU;按下为‘X’则退出dos

SHOWINFO4

SHOWINFO5

JMPINPUT;否则提示输入错误,重新开始

X0:

POPES

POPDS

POPAX

POPF

JMPRETU

RETU:

MOVAH,4CH

INT21H

MUSICENDP

CODEENDS

ENDSTART

3程序的调试与运行

3.1调试程序

调试过程与编写程序的过程紧密相关,具体过程也就是把源程序放在MASMforWindows中进行编译,如果源程序中有错误,编译时系统就会给出提示,根据系统提示可以找到是哪一行出现了问题,对其进行分析并修改,重新编译,直到编译时系统对那一行没有给出提示为止。

如果系统提示源程序中存在多条错误,就按照上述方法逐条进行修改,直到系统提示编译成功。

在调试过程中,出现了很多问题,对源程序进行编译调试过程中,画钢琴界面的那一块程序错误比较多。

还有一块难点是最终主程序对各个子程序的调用,常常因为很多细节问题而导致子程序无法正常的嵌入。

在编译、调试程序的过程中程序出现错误是不可避免的,有的是一种原因引起的简单错误,有的是多个子程序相互作用引起的复杂错误,因此需要掌握错误的一般诊断方法,故障诊断过程就是以错误现象出发,通过反复测试,做出分析判断,逐步找出错误所在并修改的过程。

当源程序大致编好且没有错误后,需要对它进行修改和完善。

最后运行程序,就可以得到与任务书中要求的音乐播放功能。

3.2运行程序

程序运行的截图:

开始界面:

图3-1

运行开始后显示钢琴界面,并显示提示语言。

 

播放界面:

图3-2

按下“A”后,开始正常播放音乐。

按下D会加快音乐播放速度,按下E会减慢音乐播放速度。

 

输入错误界面:

图3-3

开始时如果输入的不是“A”,则提示输入错误,要求重新输入。

4心得体会

此次课程设计的题目对我来说并不简单,由于汇编知识的匮乏,在面对设计题目的时候完全毫无思路,后来通过仔细审题、通过网络查找相关程序资料然后与同组同学交流讨论设计思路以及程序编写逐步明晰了设计的思路。

尽管这一周的课程设计时间是短暂并且困难重重的,但是我还是和队友们团结合作,一起克服困难,努力去完成课程设计。

我们在解决困难的过程中有很多自己的感受,我们在一边查找资料一边学习、交流的过程中,逐渐通过自己的努力解决了一个一个问题。

这个过程中我们逐渐体会到汇编语言的神奇之处,虽然我们解决的问题尚且是简单的问题,但是这个过程中解决问题的方法是让人获益匪浅的,并且我们学会了很多关于汇编的实际操作知识。

其次,我更加深刻的体会到自主学习在课程设计中的关键作用。

在遇到问题的时候,只有先积极思考,查找资料,遇到瓶颈与同学交流。

记得编写子程序的时候在编译的时候总是出现问题,嵌套不匹配等。

后来通过检查发现原来都是比较细节的地方出现了问题。

通过这个发现,使我意识到在编写程序代码的过程中必须时刻保持清醒的头脑,专心致志的输入代码,切忌细小的地方出现差错。

再者,同时也了解到上机操作实践的重要,这样有助于书本知识的系统化,现实化,更有利于自己的查漏补缺。

书本上的知识是死的,能够在现实中运用的知识才是活的。

通过这次课程设计,也促进了我们的同学之间互相学习,通过编写程序,增加了学习的积极性和趣味性。

通过实际解决问题,巩固加深了对课堂教学内容的理解,提高了我们运用汇编语言进行程序设计和动态调试程序的能力,培养了我们克服困难的毅力和精神,提高了综合解决问题的能力。

 

参考文献

[1]《微机原理与接口技术》.周佩玲,彭虎傅,忠谦.电子工业出版社.2007  

[2]《微机原理及应用技术(第二版)》.朱金均,麻新旗.机械工业出版社.2005 

[3]《汇编语言(第2版)》.王爽.清华大学出版社.2008

[4]《微型计算机原理及应用》.清华大学出版社,谭浩强,2001年

[5]《微型计算机技术及应用》.清华大学出版社,戴梅萼,史嘉权,2003年

 

本科生课程设计成绩评定表

姓名

王琨

性别

专业、班级

自动化专业自动化1105

课程设计题目:

音乐演奏程序设计

课程设计答辩或质疑记录:

1怎么实现音乐播放程序提高和降低播放音乐的速度的功能?

答:

通过定义变量RATE,并在子程序中分别定义三个段A0、A1、A2,在其中分别赋值RATE为4000,,1000,10000。

通过JZ命令,判断输入若为A则跳转到A0段执行的是正常播放速度,若输入是D则跳转到A1执行加快播放速度,若是输入E则跳转到A2执行减慢播放速度。

从而实现功能。

2钢琴键盘琴键的长度以及位置是怎么确定的?

答:

通过定义琴键的起始坐标,而后通过MOVSI与MOVDX分别设置白键的上方的边、下方的边的坐标,从而改变白键的长度。

上面的边的坐标决定白键的位置。

黑键也是同样的道理。

成绩评定依据:

评定项目

评分成绩

1.选题合理、目的明确(10分)

2.设计方案正确,具有可行性、创新性(20分)

3.设计结果(例如:

硬件成果、软件程序)(20分)

4.态度认真、学习刻苦、遵守纪律(15分)

5.设计报告的规范化、参考文献充分(不少于5篇)(10分)

6.答辩(25分)

总分

最终评定成绩(以优、良、中、及格、不及格评定)

 

指导教师签字:

年月日

........忽略此处.......

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2