您好,欢迎访问三七文档
天天津津大大学学汇汇编编语语言言程程序序设设计计课课程程设设计计学学院院::职职业业技技术术教教育育学学院院学学号号::33000088221122001122姓姓名名::黄黄立立宁宁班班级级::11指指导导教教师师::谢谢永永超超22001100--44--22662内容简介本程序为利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。该程序能记录所演奏的音乐,能回放所演奏的音乐。运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。成绩:教师签字:3目录开发环境………………………………………………………………1功能描述…………………………………………………………1系统功能结构框图…………………………………………….2程序代码……………………………………………………3运行结果………………………………………………………11课程设计体会…………………………………………………………12参考文献…………………………………………………………13题目:键盘控制发声程序----电子琴一、开发环境1.硬件环境微型计算机一台2.软件环境WindowsXP操作系统使用工具MASM5.0,要进行汇编语言的编辑和运行,需要以下工作环境:⑴编辑程序,如EDIT.EXE、WORD⑵汇编程序,如MASM.EXE⑶连接程序,如LINK.EXE⑷调试程序,如DEBUG.EXE二、功能描述利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。该程序能记录所演奏的音乐,能回放所演奏的音乐。运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。三、系统功能结构图2初始化显示界面键盘输入是否为结束符9?BP频率表首地址‘1’--’7’?‘q’--’u’?DI频率值,time持续时间YNYNY结束NY结束N3(续上图):四、程序代码;利用q、w、e、r、t、y、u、1-7演奏音符的程序,能记录所演奏的音乐,能回放所演奏的音乐;**********************************************************DATASEGMENTmsgDB0DH,0AH,''DB0DH,0AH,'[1234567]'DB0DH,0AH,'[qwertyu]'DB0DH,0AH,'_________________'DB0DH,0AH,''DB0DH,0AH,''DB0DH,0AH,'*************************************'DB0DH,0AH,'NOTICE'DB0DH,0AH,'Press1-7tomakemusicandplayit.'调用GENSOUND结束4DB0DH,0AH,'Press9tointerrupt.'DB0DH,0AH,'********************************','$';音调(后面用到-1判断音乐播是否放完)sound_0DW-1sound_11DW441,-1sound_12DW495,-1sound_13DW556,-1sound_14DW589,-1sound_15DW661,-1sound_16DW742,-1sound_17DW833,-1sound_1DW882,-1sound_2DW990,-1sound_3DW1112,-1sound_4DW1178,-1sound_5DW1322,-1sound_6DW1484,-1sound_7DW1655,-1timeDW25DATAENDS;**********************************************************5STACKSEGMENTDb200DUP('STACK');将音符放入堆栈中STACKENDS;**********************************************************CODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODE;段说明START:MOVAX,DATAMOVDS,AXMOVaH,00;初始化显示方式MOVAL,00INT10H;------------------定义一个显示宏SHOWMACRObLEADX,bMOVAH,9;将以$结尾的字符串显示在屏幕上,并将入口参数字符串的首地址的段基址和偏移地址分别放入DS和DX中INT21HENDM6;------------------定义一个声音宏onesoundmacrosoundis,jumpis,letterisCMPAL,letterisJNZjumpisLEASI,soundisLEABP,DS:timeCALLMUSICJMPinputENDM;--------------------showmsg;显示音符和提示;--------------------INPUT:MOVAH,01HINT21H;从键盘输入一个字符并显示CMPAL,'9'jnzgomovah,4ch;若输入9则返回DOS,终止制作音乐int21hgo:onesoundsound_11,a0,'q'a0:onesoundsound_12,b0,'w'7b0:onesoundsound_13,c0,'e'c0:onesoundsound_14,d0,'r'd0:onesoundsound_15,e0,'t'e0:onesoundsound_16,f0,'y'f0:onesoundsound_17,g0,'u'g0:onesoundsound_1,h0,'1'h0:onesoundsound_2,i0,'2'i0:onesoundsound_3,j0,'3'j0:onesoundsound_4,k0,'4'k0:onesoundsound_5,l0,'5'l0:onesoundsound_6,m0,'6'm0:onesoundsound_7,n0,'7'n0:onesoundsound_0,o0,alo0:jmpinput;---------------------发声(将堆栈中的音符数据送到端口地址)GENSOUNDPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXPUSHDI8;时间间隔定时器(计数器2的初始化过程)MOVAL,0B6HOUT43H,AL;给公用的控制寄存器(地址为43H)赋值MOVDX,12HMOVAX,348ch;频率除数DIVDIOUT42H,ALMOVAL,AHOUT42H,ALINAL,61H;扬声器驱动(61H为输出寄存器分配I/O端口号)MOVAH,ALORAL,3OUT61H,AL;打开扬声器WAIT1:MOVCX,3314;等待下一音符的到来callwaitfDELAY1:DECBX;声音的延迟JNZWAIT1MOVAL,AH;关闭扬声器OUT61H,ALPOPDIPOPDX9POPCXPOPBXPOPAXRETGENSOUNDENDP;*******************************waitfprocnearpushaxwaitf1:inal,61handal,10hcmpal,ahjewaitf1movah,alloopwaitf1;CX=0时退出循环,继续键入音符制作音乐popaxretwaitfendp;******************************10MUSICPROCNEARPUSHDSSUBAX,AXPUSHAXFREG:MOVDI,[SI]CMPDI,-1;音乐是否放完JEEND_MUSMOVBX,DS:[BP];将音符放入堆栈CALLGENSOUND;调发声子程序ADDSI,2ADDBP,2JMPFREGEND_MUS:RETMUSICENDPCODEENDS;*******************************ENDSTART五、运行结果11图1生成OBJ文件图2生成EXE文件图3运行结果12六、课程设计体会这次课程设计使我对汇编语言有了更进一步的了解和熟悉,实际操作编写程序,并使之能在计算机上正确运行真的有点困难。平时觉得只要把课本上的知识学会就好了,没想到一付诸实际就全没了头脑。课程设计只是书本上知识的灵活运用,与所学的有相当大的联系,但又高于所学的。一个看似简单的题目,要动手把它设计出来就十分困难。所以以后要注意把从课本上所学到的知识与实际联系起来,灵活运用,举一反三。同时通过本次汇编语言程序的课程设计,我学到了许多课上老师没讲到的知识,开拓了我的眼界。课程设计不但让我巩固了所学知识,也使我把理论与实际从真正意义上结合起来,更重要的是增强了学习的兴趣,培养了我们借助互联网络搜集、查阅相关文献资料和组织材料的综合学习能力。七、参考文献[1]沈美明、温冬蝉编,IBM-PC汇编语言程序设计,北京:清华大学出版社,2001.[2]网址:=1013
本文标题:分支结构实验报告
链接地址:https://www.777doc.com/doc-5750557 .html