汇编模拟电子琴程序1_第1页
汇编模拟电子琴程序1_第2页
汇编模拟电子琴程序1_第3页
汇编模拟电子琴程序1_第4页
汇编模拟电子琴程序1_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编语言程序设计课程设计报告题目: 模拟电子琴(音乐播放项目子程序) 指导老师: 学生姓名: 学 号: 专 业: 班 级: 2011年6月20日目录:(一)程序设计任务 1.1题目···························3 1.2要求·······

2、;····················3 (二)课题背景 2.1汇编语言的优点·················3 2.2课题意义········

3、···············32.3程序设计目的···················3(三)运行环境·············

4、········4 (四)程序概要设计 4.1课程设计基础知识(附图)········4,5 4.2程序设计思想···················6 (五)程序设计流程图及功能图·····

5、3;·6,7 (六)程序代码及其说明·············8,9 (七)实现界面(图)················10,11 (八)总结与体会············

6、83;······12 (九)参考文献·····················12(一) 程序设计任务:1.1题目:模拟电子琴1.2要求:设计一个可模拟发声的电子琴程序,并实现功能,附加显示。(二) 课题背景: 2.1汇编语言的优点:汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了

7、编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。设计一个可模拟发声的电子

8、琴程序,作为音乐播放项目的子程序。2.2课题意义:有人这样说过:时间多么重要,错过了就永远错过。时间多么坚定,因为时间从不回头。时间多么关键,就在那一刻把握。时间就是一切,作为学生的我们更应该有很强的时间意识,刚刚学完汇编语言,借此机会用汇编语言编制了一个时钟的程序。进一步巩固所学的知识,熟练应用汇编语言进行一些程序的制作,进一步培养对编程的兴趣。为以后的工作打下基础。检验自己的学习成果。我自己学到的知识应用到实际当中,做一些对自己生活和学习有用的程序,达到学以至用的目的。2.3程序设计目的:利用汇编功能实现一个小的电子琴程序,主要功能是根据键盘上的按键发出不同的音符,每个音符由它的音调和频率

9、以及时间来决定。(3) 运行环境: 硬件:8086以上CPU,内存256M以上。 软件:WINDOWS操作系统,MASM,LINK汇编编译链接件。(四)程序概要设计:4.1课程设计基础知识(附图):8253A内部结构:8253外部引脚图: 计数器内部结构:8253A端口地址: 4.2程序设计思想:音乐发声是根据频率和它的延时实现的,不同的音符有不同的频率和时间,根据任务要求先设计一个可视菜单,应用系统显示功能,设置一定的显示方式,在对每个音符1-7定义应有的频率和时间,插入发声子程序,利用DOS功能输入相应数字发出相应的音,整个程序利用栈来实现,这样就做成了一个简单的模拟电子琴程序。显示菜单(

10、四)程序设计流程图:实现功能健康离开家牛津布定义时间定义频率编译音符设置文本方式 程序设计功能图:开 始清 屏显示提示 输入NAL=1?NYAL=2?NY发出DO声 发出RI声AL=3? NYAL=4? Y发出MI声AL=5? 播放童年播放童年 N发出FA声N NYAL=6? NY发出SO声AL=7? Y发出LA声 发出SI声 NAL=回车? Y 退出程序 (六)程序代码及其说明:EXTRNSOUND:FAR,CLEANMP:FAR,SET:FAR ;当代码段长时,不能放在同一段时要标示为FARpublicmpa;模拟电子钢琴程序STACKSEGMENTPARASTACK'STACK&

11、#39;定义堆栈段DB64 DUP('STACK')STACKENDSDSEGSEGMENTPARA'DATA'定义数据段WARDB 13,10,5 DUP(' '),'WARING ! Please press the right number!',13,10,'$'TsDB 5 DUP(' '),'Press the key 1-7 to Play the panio!',13,10DB 5 DUP(' '),'Press Enter to exit to

12、 the main menu!','$'DSEG ENDSCODESEGMENTPARA'CODE'定义代码段ASSUME CS:CODE,DS:DSEG,SS:STACKMpa proc farpushdi;寄存器入栈push DSpush DXpush CXpush BXpush AXSTART:MOVAX,DSEG;初始化数据段MOVDS,AX;MOVaH, 0 ;设置显示方式为2(文本80*25);MOVAL,2 ;INT10H;*显示宏定义DISPLAYMACRO b LEA DX,b MOV AH,9 INT 21H ENDM SRR:CAL

13、LCLEANMPCALLSETDISPLAYTs;显示提示play:MOVAH,7INT21H;开始演奏cmpal,0dhjeexmp;退出程序CMPAL,'1'JEONECMPAL,'2'JETWO CMPAL,'3'JETHREECMPAL,'4'JEFOURCMPAL,'5'JEFIVECMPAL,'6'JESIXcmpal,'7'jeSEVENDISPLAYWAR;输入错误提示jmpplayONE:movdi,262JMPMCCTWO:movdi,294JMPMCCTHREE

14、:movdi,330JMPMCCFOUR:movdi,349JMPMCCFIVE:movdi,392JMPMCCSIX:movdi,440jmpmccSEVEN:movdi,494jmpmccMCC:movbx,400CALLSOUNDJMPplayexmp:pop ax;寄存器出栈pop bxpop cxpop dxpop dspopdiret;程序返回mpaENDPCODEENDSENDSTART(7) 实现界面(图)(八)总结与体会:以前从没有学过关于汇编语言的知识,起初学起来感觉很有难度。当知道要做课程设计的时候心里面感觉有些害怕和担心, 担心自己不会或者做不好。但是当真的要做的时候也只好进自己作大的努力去做, 做到自己最好的。我们在这个过程中有很多自己的感受,我想很多同学都会和我有一样的感受,那就是感觉汇编语言真的是很神奇,很有意思。我们从开始的担心和害怕渐渐变成了享受,享受着汇编带给我们的快乐。看着自己做出来的东西,心里面的感觉真的很好。虽然我们做的东西都还很简单,但是毕竟是我们自己亲手做出来的。很有成就感。 在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,这是去找同学讨论一下,收获

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论