音乐演奏程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书
学生姓名:王琨专业班级:自动化1105班
指导教师:向馗工作单位:自动化学院
题目: 音乐演奏程序设计
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.使用汇编语言设计一个在计算机上运行的音乐演奏程序。
2.屏幕显示钢琴图像。
3.实现以下附加功能:按“D”键,加快播放速度,按“E”键,降低播放速度。
4. 按"X"鍵,退出。
5.撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:
12月30日-----12月31日查阅资料及方案设计
1月2日-----1月3日编程
1月6日调试程序
1月7日-----1月8日撰写课程设计报告
指导教师签名:年月日
系主任(或责任教师)签名:年月日
摘要
汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。
使用的编译软件是masm for windows ,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调用来编写程序,对于我们编程应用者来说是透明的,我们只需要调用显示驱动程序INT 10H。钢琴主要是由矩形、直线等规则几何形状构成,可以采用文本方式,也将屏幕设置成图形显示方式,通过画点、画线等基本程序完成钢琴的绘制。通过设定白键和黑键的起始坐标,来改黑、白键的长度和相对位置从而完成绘制。
加快播放速度与降低播放速度是在不同三个段A0、A1、A2定义播放速度变量RATE的不同值,按下A正常播放跳转到A,当要实现附加功能时按下D 或者E的时候会相应跳转到A1、A2使得音乐以不同的速度播放,从而实现降低音乐播放速度或者提高音乐播放速度的功能。
2.2程序设计流程图
音乐模块流程图:
2.3程序代码
DATA SEGMENT
FLAG DB 1
RATE DW ? ;播放速度变量
INFO1 DB 0DH,0AH,'Welcome To Music!$'
INFO2 DB 0DH,0AH,'Please enter A to start music!$'
INFO3 DB 0DH,0AH,'OPTIONS:$'
INFO4 DB 0DH,0AH,'WRONG ORDER!$'
INFO5 DB 0DH,0AH,'PLEASE INPUT AGAIN!$'
MUSLIST DB 0DH,0AH,'A: START'
DB 0DH,0AH,'X: ESC'
DB 0DH,0AH,'D: High Speed'
DB 0DH,0AH,'E: Low Speed'
DB 0DH,0AH,'$' ;提示语
;音乐一------------------------------------------------------------ MUS_FREG1 DW 262,262,294,262,349
DW 330,262,262,294,262
DW 392,349,262,262,523
DW 440,349,262,262,466
DW 466,440,262,392,349,-1
MUS_TIME1 DW 50,50,100,100,100
DW 100,100,50,50,100,100
DW 100,100,100,50,50,100
DW 100,100,100,100,100,50
DW 50,100,100,100,100,100
DATA ENDS
STACK SEGMENT
DB 400 DUP ('STACK')
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: ;主程序
MOV AH,0
MOV AL,12H;图形方式
INT 10H
MOV AH,6
MOV BH,9;蓝色色背景
MOV AL,0;清屏
MOV CH,0