音乐演奏程序设计
音乐演奏程序设计

音乐演奏1 总体要求与分析1.1设计要求本文主要编写一段音乐程序,该程序可以进行如下操作:按大写字母“A”,奏一首歌曲;按大写字母“B”;奏另一首歌曲,曲目自选,可重复操作。
按Q 退出程序。
1.2设计思路分析在IBM-PC/XT机中都带有8253-5定时/计数器,IBM-PC/AT中带有8254定时/计数器,这两种芯片功能十分类似。
本文通过对8253-5定时/计数器芯片的操作实现音乐演奏。
该声音接口通过汇编语言对8253-5的端口直接进行操作,可以不必要过多的使用BIOS的调用和DOS的调用。
计数器芯片有3个通道,各自具有专用功能。
通道0时系统的始终节拍计时器,通道1专用于产生动态RAM的定时刷新信号,通道2用来控制计算机的扬声器的声音频率。
该音乐演奏主要用到通道2的功能,使通道2工作在“方波发生器”方式,产生相应频率的音调送至喇叭驱动电路,使喇叭发出不同音调的声音。
使用8255A的PB0控制通道2的计数,PB1控制通道2的输出对扬声器产生控制的时间。
人机交互包括屏幕显示提示语以及人工输入相应参数,主要应用到BIOS的10H号中断调用以及DOS的21H号中断调用。
BIOS的10H号中断调用用于显示器驱动,设置显示模式和光标位置;DOS的21H号中断调用用于单字符输入以及多字符输出显示。
音乐演奏实现的一个主要步骤是乐谱编程。
通过相应的频率表将乐谱中对应的音符转化为计数器的计数初值,节奏通过延时程序转化为对喇叭发音时间的控制,从而实现音符和节拍的数字化。
2 方案设计音乐的实现主要是对乐谱中的单音符按照一定的音符频率表转化为计数器的计数频率以及喇叭发声的控制时间,通过计数产生相应的控制动作。
由此可以有两种方案比较和选择。
2.1 方案一通过编程使用软件来实现计数和喇叭发声的时间设置,控制8255A并行I/O 接口驱动喇叭发声。
CPU每执行一条指令需要耗费一定的时间,这样可以通过循环的方式设置好循环次数,实现软件计数,然后输出相应的高低电平,驱动喇叭发出对应频率和节拍的声音。
基于汇编的音乐弹奏程序

武汉工程职业技术学院学报
J ur l W u n i e i tt e o na of ha Eng ne rngI iut ns
VO1 2 . 3 NO. 3
S pe b r 0 1 e tm e 2 1
基 于 汇 编 的音 乐 弹奏 程 序
夏 超 群
( 汉工程 职业技 术 学 院 湖 北 武 汉 :3 0 0 武 40 8 )
摘 要
P C系列 8 5 2 3定时/ 数 器的 2号计数 器被初 始化 后 , 计 可产 生扬 声器发 声的音 调信 号 。文
章分 析 了扬 声 器驱动 电路 的工 作原理 , 通过 程序 控制 能使 扬声 器发 出不 同频 率 的声音 , 而设 计 出 进
由扬 声器 驱动 电路 图可 以看 出 ,2 5或 等效 电 85
路 输 出寄存器 第 0位 , 制 8 5 / 2 4定 时器 门控 控 238 5 信号( GAT 2 的状 态 , E) 即是否允 许 2号 计数 器 开始 工作 ; 出寄存器 第 1位 , 制扬声 器 的与 门电路 是 输 控 否接 通 , 即控制扬 声 器 是否 能 接 收 2号计 数 器 的输
音 。
片 , 以为处 理器 和外设 提供 时 间标 记 , 可 也可 以对外 部 事件进 行计 数 。而计 数和 定时两 个概 念如 果联 系 起 来 , 容 易让人 联想 到频 率 , 很 由频 率 的振动 可 以产 生声音 , 频率 的高 低 , 定声 音音 调 的高低 。在考 虑 决
发 声频 率高 低时 , 如果 还考 虑发声 时 间的长 短 , 将 或
1 2 扬声 器驱 动 系统 .
计算 机上 大多数 数据 的输入 / 出 , 是 由系统 输 都
演奏-人教版四年级音乐上册教案

演奏-人教版四年级音乐上册教案一、教学目标1.了解什么是演奏及其在音乐中的作用;2.学习简单的打击乐器演奏方法;3.能够用打击乐器表现音乐节奏和情感。
二、教学重难点1.重点:学习打击乐器演奏方法;2.难点:掌握动作的协调性,准确表达节奏和情感。
三、教学内容3.1 什么是演奏演奏是指演唱、演奏乐器等一系列表演艺术活动。
在音乐中,演奏是发挥音乐作品的美感和艺术价值的重要手段之一。
3.2 打击乐器演奏方法在活动中,老师应该给学生直接演奏示范,然后让学生模仿,最后逐渐调整细节,熟练掌握技法。
以下是常见的打击乐器演奏方法:1.摩擦法:利用器乐表面材料与打击工具相互摩擦产生声音,如手鼓、铃鼓;2.敲打法:利用打击工具敲打器乐面板产生声音,如木头、皮面的鼓,以及木琴等乐器;3.摇晃法:利用器乐特有的结构来摇晃产生声音,如沙锤、铃铛等。
3.3 用打击乐器表现音乐节奏和情感通过练习打击乐器,孩子们应该能够从中感受到音乐中的节奏和情感。
在演奏时,声音的高低、强弱、速度快慢等方面都可以表达不同的情感,例如悲伤、欢乐、激动等。
四、课堂教学4.1 热身首先进行简单的热身活动,例如做一些伸展运动,放松身体。
4.2 学习打击乐器学生们通过观看老师演奏示范,学习如何使用打击乐器演奏。
老师应该重点指导学生正确的姿势和节奏。
4.3 练习演奏将学生分成小组,让每个小组演奏一个简单的音乐节奏,然后逐渐增加难度。
通过不断练习,让学生们掌握演奏基本技巧。
4.4 展示演奏成果让学生们根据老师的要求,选择适当的演奏方式,将音乐节奏演奏出来。
这个环节可以考虑邀请其他班级的同学来观看演出,让学生们更有动力和自信。
4.5 总结归纳在演奏结束后,老师应该引导学生总结归纳,让他们对今天的学习有更深入的理解和感悟。
五、师生互动教师在教学过程中应该与学生进行有效的互动。
例如,教师可以鼓励学生们展示自己的演奏成果,并对学生表现给予鼓励和肯定。
同时,教师也可以针对学生的不同表现,提供个性化的指导和反馈,帮助学生们更好地掌握演奏技巧。
少儿编程scratch演奏音乐教案

少儿编程教学资料,仅供参考,需要可下载并修改后使用!第三课演奏音乐教学过程教学环节教师活动学生活动设计意图创设情景激趣导入1、播放加了“小星星”音乐的“魔术表演”上节课大家制作了“螃蟹大变身”,现在我们来看看这个作品和你们的作品有什么不同?大家想知道音乐是怎么实现的吗?这节课我们一起来学习“演奏音乐”吧!2、引出本节课主题,今天大家将会学习如何演奏音乐,并且也会学习如何将电脑键盘制作成电子乐器。
下面我们来看一些用Scratch制作的关于音乐设计的优秀作品。
演示优秀作品,激发学生的创作欲望观看视频--课程导入学生好奇学生思考想要创作用上节课的作品加入小星星既能复习上节课内容,又能引出本节课课题。
展示用Scratch制作的优秀音乐作品激发学生的创作欲望。
这些作品也可以作为优秀学生的拓展题目。
课前准备给学生一点时间(建议2分钟)摸索用Scratch如何弹奏音乐?然后让学生回答:通过简单的探索之后,大家认为制作音乐最关键的是哪个模块?学生举手回答。
学生自己摸索认真思考举手回答通过让学生自己摸索,让学生能够自己去探索“声音”模块类,通过摸索后再进行学习会对这个知识点印象更加深刻。
让同学们举手回答问题能够活跃课堂气氛,增加课堂凝聚力。
任务驱动习得新知(一)挑战任务一现在就是我们动手操作的时候了。
对照小星星简谱,制作程序。
讲解唱名和音符数字的对应关系。
制作小星星的前半部分,让学生自己完成后面部分。
鼓励完成的快的学生上台展示完整版的小星星。
观看视频--小星星学生思考观看学习视频动手编程上台展示通过编写小星星的脚本让学生学会如何用Scratch制作音乐,掌握“声音”模块类的基本用法。
通过展示作品调动学生的积极性。
《制作与演奏作业设计方案》

《制作与演奏》作业设计方案一、设计背景《制作与演奏》是一门专注于音乐制作和演奏技巧的课程,旨在培养学生的音乐创作能力和表演技巧。
通过这门课程,学生将进修如何运用专业的音乐制作软件进行作曲和编曲,并且将有机缘展示自己的演奏技巧。
二、设计目标1. 帮助学生掌握音乐制作的基本技能,包括录音、混音、编曲等。
2. 培养学生的音乐创作能力,激发他们的创造力。
3. 提升学生的演奏技巧,让他们能够自大地在舞台上展示自己的才华。
4. 培养学生的团队合作认识,让他们学会与他人合作完成音乐作品。
三、设计内容1. 音乐制作基础知识的讲解:包括录音设备的选择、声音处理软件的应用等。
2. 音乐制作实践:学生将分组完成一首原创音乐作品的制作,包括编曲、录音、混音等环节。
3. 演奏技巧的训练:学生将选择一首乐曲进行演奏,并在教室上进行表演。
4. 演奏实践:学生将分组进行音乐演奏,并在学校音乐会上展示自己的表演。
四、设计步骤1. 第一周:介绍音乐制作的基础知识,让学生了解音乐制作的流程和工具。
2. 第二周至第四周:学生分组进行音乐制作实践,完成一首原创音乐作品。
3. 第五周:学生进行演奏技巧的训练,选择一首乐曲进行练习。
4. 第六周至第八周:学生分组进行音乐演奏实践,准备参与学校音乐会。
五、评估方式1. 学生音乐作品的评分:评分标准包括音乐的创意性、编曲的精准度、声音的质量等。
2. 学生演奏表现的评分:评分标准包括演奏的技巧、表现的感情等。
3. 学生团队合作的评分:评分标准包括团队合作的效率、沟通的顺畅等。
六、教学资源1. 音乐制作软件:如Ableton Live、Logic Pro等。
2. 乐器:如吉他、键盘等。
3. 音频设备:如麦克风、音箱等。
4. 学校音乐厅:用于学生音乐会的表演场地。
七、总结通过《制作与演奏》课程的进修,学生将在音乐制作和演奏方面得到全面的培养,提升自己的音乐素养和表演能力。
希望学生能够在这门课程中找到音乐创作的乐趣,展示自己的才华,成为优秀的音乐人。
基于80C51单片机的音乐演奏器设计

单片机课程设计报告音乐演奏器姓名:学号:专业:基于80C51单片机的音乐演奏器设计设计原因:随着科技的进步,各种高科技玩具应运而生,各种智能玩具层出不穷。
如果给玩具添加更多功能,那么,此种玩具就具有更强的竞争力。
故此,给玩具添加音乐演奏功能不失为良策。
此外,音乐演奏器还可以应用于多种领域,比如可应用于门铃、闹铃等各种系统。
总之,音乐演奏器有广泛的用途,且具有很强的生命力。
用单片机来实现音乐演奏的功能,既简单轻便,又易于实现,并且成本比古典乐器低廉许多。
最重要的是,基于单片机控制的音乐演奏器能发出一般乐器难以实现的音效。
在网上搜各种曲谱均可以用单片机来实现其音效。
系统工作过程:音乐演奏器的主体由单片机构成,通过控制定时器时间的不同可以产生不同频率的方波,用于驱动喇叭发出不同的音符,再利用延时来控制发音时间的长短,即可控制节拍,把乐谱中的音符和相应的节拍变换成时常数和延迟常数,做成数据表格存放在存储器中。
由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该方波的持续时间。
当延迟时间到时,再查下一个音符的定时常数好延迟常数,依次进行下去。
利用定时器T1以方式1工作,产生各音符对应频率的方波,由P1.0输出驱动喇叭发音。
节拍控制通过改变调用延时子程序D200(延时200ms)的次数来实现,以每拍800ms为例,一拍需循环调用D200延时子程序4次,同理,半拍就需要调用两次,设晶振频率为6Mhz,乐曲中的音符、频率、定时常数的关系可以参照有关表格。
系统硬件组成:1、89C51单片机一个2、晶振6MHz立式一个。
3、起振电容30pF瓷片电容2个4、复位电容22uF 16V电解电容1个5、电阻100欧、1K欧、4.7K欧各一个6、三极管9012一个7、蜂鸣器8欧一个8、DIP封装插座40脚集成插座一个9、万能版150*90一个流程图如下:电路原理图:主程序为:ORG 0000HLJMP STARTORG 001BHMOV TH1,R1MOV TL1,R0CPL P1.0RETIORG 0100HSTART:MOV TMOD,#10HMOV IE,88HMOV DPTR,#TABLOOP:CLR AMOVC A,@A+DPTRMOV R1,AINC DPTRCLR AMOVC A,@A+DPTRMOV R0,AORL A,R1JZ NEXT0MOV A,R0ANL A,R1CJNE A,#0FFH,NEXTSJMP STARTNEXT:MOV TH1,R1MOV TL1,R0SETB TR1SJMP NEXT1NEXT0:CLR TR1NEXT1:CLR AINC DPTRMOVC A,@A+DPTRMOV R2,ALOOP1:LCALL D200DJNZ R2,LOOP1INC DPTRAJMP LOOPD200:MOV R4,#81HD200B:MOV A,#0FFHD200A:DEC AJNZ D200ADEC R4CJNE R4,#00H,D200BRETTAB:DB 0FEH,25H,02H,0FEH,25H,02H,0FEH,25H,04H DB 0FDH,80H,04H,0FEH,84H,02H,0FEH,84H,02HDB 0FEH,84H,04H,0FEH,25H,04H,0FEH,25H,02HDB 0FEH,84H,02H,0FEH,0C0H,04H,0FEH,0C0H,04HDB 0FEH,98H,02H,0FEH,84H,02H,0FEH,57H,04HDB 00H,00H,04H,0FFH,0FFHEND●结果与结论:●设计此程序需要掌握89C51单片机中断和定时器的综合应用;还要学习中断和定时器的编程方法及单片机全系统调试的过程及方法。
梁祝基于-VerilogHDL的演奏设计

设计题目:“梁祝乐曲发生器”一、设计任务及要求:利用EDA/SOPC实验开发平台提供的16*16点阵LED以及EP2C35核心板,实现“梁祝”乐曲发生器。
1、查阅相关资料,明确设计步骤;2、采用Verilog HDL编程语言设计程序;3、能够按照设定节拍(每拍持续1s)顺畅的播放“梁祝”乐曲并且听着基本无错;4、扩张要求:自主设计(如快放、倒放、换歌等)。
二、设计原理及方案乐曲播放器的基本原理是,一个音符对应一个频率信号。
频率的高低决定了音调的高低。
音乐的十二个平均率规定:每两个八度音之间的频率相差一倍。
在两个八度音之间又可以分为十二个半音,每两个半音的频率比为2.另外,音名A(简谱中的低音6)的频率为440HZ,音名B到C之间、E到F之间为半音,其余为全音。
由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,;利用高低音如下关系可得下表:低8度音:基本音频率/2 ,例如低音1的频率为523/2=261.5;高8度音:基本音频率×2,例如高音1的频率为523×2=1046音符与频率的对应关系如下各音阶频率对应的分频比及预置数对于乐曲中的休止符,只要将分频系数设为0,即初始值为1047,此时扬声器不发音。
从上表中可以看出,最大分频系数为1912,所以采用11位二进制计数器分频可满足需要。
对于不同的分频系数,只要加载不同的预置数即可。
采用加载预置数实现分频的方法比采用反馈复零法节约资源,实现起来也容易一些。
音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。
本设计中将全音的持续时间设为1s,提供的4Hz的时钟频率即可产生四分音符的时长。
控制音长通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间也就越长。
每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,如二分音符,在记谱时将该音名联系记录两次即可。
对照以上规则可编制乐谱的程序。
跳吧!跳吧!(二重奏)-湘文艺版《演奏》教案

跳吧!跳吧!(二重奏)-湘文艺版《演奏》教案一、教学目标1.了解二重奏的基本概念和演奏技巧;2.掌握《演奏》曲目的基本乐谱和演奏方法;3.能够配合伴奏,完成二重奏演奏。
二、教学重点1.二重奏的基本概念和演奏技巧;2.《演奏》曲目的基本乐谱和演奏方法。
三、教学难点1.如何协调配合伴奏,完成二重奏演奏。
四、教学内容和方法1. 教学内容本次教学的内容是《演奏》这首曲目的二重奏演奏。
2. 教学方法本次教学采用“示范教学法”和“启发式教学法”相结合的方式进行。
具体教学过程如下:3. 教学过程第一步:了解二重奏的基本概念和演奏技巧•二重奏是指两个音乐家同时演奏的音乐作品。
•二重奏要求两位演奏者的演奏技巧相当,需要高度的协调和配合。
•二重奏演奏时,一个人担任主旋律,另一个人担任伴奏。
伴奏要充分理解主旋律,协调好节奏和音量。
第二步:学习《演奏》曲目的基本乐谱和演奏方法•《演奏》是一首轻快的曲目,主要以小提琴和钢琴为主要乐器进行演奏。
•小提琴担任主旋律,钢琴担任伴奏。
主要演奏技巧包括:颤音、轻重音、弓法、拨弦等。
•伴奏以简单的和弦为主,要注意协调好节奏和音量。
第三步:示范演奏和指导练习•教师可以和学生一起演奏示范,让学生听和看示范,帮助学生更好地理解和掌握演奏技巧。
•教师也可以引导学生自行练习,针对学生容易出错的地方进行指导和提醒,纠正错误的演奏姿势和技巧。
第四步:合奏演练和评估效果•在学生掌握基本技能后,教师可以让学生进行合奏演练,听取合奏效果,并给予评估和改进意见。
•教师也可以引导学生进行互相指导和合作,帮助学生更好地理解和掌握演奏技巧。
五、教学反思本次教学过程中,突出了示范和练习相结合的教学方法,更好地引导学生掌握演奏技巧。
同时,学生之间的合作和互相指导也起到了很好的促进作用,增强了合作意识和技能。
在以后的教学中,可以更多地尝试创新教学方式,让学生更积极地参与到教学过程中来,提高教学效果。
- 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 SEGMENTFLAG DB 1RATE 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,349DW 330,262,262,294,262DW 392,349,262,262,523DW 440,349,262,262,466DW 466,440,262,392,349,-1MUS_TIME1 DW 50,50,100,100,100DW 100,100,50,50,100,100DW 100,100,100,50,50,100DW 100,100,100,100,100,50DW 50,100,100,100,100,100DATA ENDSSTACK SEGMENTDB 400 DUP ('STACK')STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: ;主程序MOV AH,0MOV AL,12H;图形方式INT 10HMOV AH,6MOV BH,9;蓝色色背景MOV AL,0;清屏MOV CH,0MOV DH,29MOV DL,79INT 10HMOV SI,200MOV DX,400REDRAW:MOV DI,26ADD DI,46MOV CX,26DEC DXCMP DX,SIJB NEXTMOV BL,0PAINT:MOV AH,0CHMOV AL,7;印出点的颜色白色->AL,画白色琴键 MOV BH,0;页号INT 10HINC CXCMP CX,DIJBE PAINTADD DI,74ADD CX,28INC BLCMP BL,7JBE PAINTJMP REDRAWNEXT:MOV SI,200MOV DX,300REDRAW1:MOV DI,63ADD DI,46MOV CX,63DEC DXCMP DX,SIJB LLMOV BL,0PAINT1: MOV AL,0;印出点的颜色黑色->AL,画黑色琴键 MOV AH,0CHMOV BH,0INT 10HJUMP:INC CXCMP CX,DIJBE PAINT1ADD DI,74ADD CX,28INC BLCMP BL,7JBE PAINT1JMP REDRAW1LL:MOV AX,DATAMOV DS,AXCALL MUSIC_PLAY ; 音乐播放子程序MUSIC_PLAY PROCSHOW MACRO b ;定义一个宏显示字符串LEA DX,bMOV AH,9INT 21HENDMADDRESS MACRO A,B ;音乐地址宏 LEA SI,ALEA BP,DS:BENDMSHOW INFO1SHOW INFO2SHOW INFO3SHOW MUSLIST ;提示语INPUT:MOV AH,01HINT 21HCMP AL,'X'JZ RETU ;按下为‘X’则退出dosCMP AL,'A' ;按下为‘A’则播放音乐JZ A0 ;是则跳到A0SHOW INFO4SHOW INFO5JMP INPUT ;否则提示输入错误,重新开始 CMP AL,'E' ;按下为‘E’则减速播放音乐JZ A1 ;是则跳到A1CMP AL,'D' ;按下为‘D’则加速播放音乐 JZ A2 ;是则跳到A2A0:ADDRESS MUS_FREG1,MUS_TIME1MOV RATE,4000 ;设置正常播放速度CALL MUSICJMP INPUTA1: ADDRESS MUS_FREG1,MUS_TIME1MOV RATE,10000 ;设置减慢播放速度CALL MUSICJMP INPUTA2:ADDRESS MUS_FREG1,MUS_TIME1MOV RATE,1000 ;设置加快播放速度CALL MUSICJMP INPUTRETU:MOV AH,4CHINT 21HAGAIN:SHOW INFO5JMP INPUTEXIT:ADDRESS MUS_FREG1,MUS_TIME1MOV RATE,4000 ;设置正常播放速度CALL MUSICJMP AGAINJMP INPUTRETMUSIC_PLAY ENDP;发声GENSOUND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV AL,0B6H ;开扬声器OUT 43H,ALMOV DX,12HMOV AX,348CHDIV DIOUT 42H,ALMOV AL,AHOUT 42H,ALIN AL,61HMOV AH,ALOR AL,3OUT 61H,ALWAIT1:MOV CX,RATE ;设置播放速度CALL WAITFDELAY1:DEC BXJNZ WAIT1MOV AL,AHOUT 61H,ALPOP DIPOP DXPOP CXPOP BXPOP AXRETGENSOUND ENDPWAITF PROC NEARPUSH AXWAITF1:IN AL,61HAND AL,10HCMP AL,AHJE WAITF1MOV AH,ALLOOP WAITF1POP AXRETWAITF ENDPMUSIC PROC NEARPUSH DSSUB AX,AXPUSH AXFREG:MOV DI,[SI] ;获取频率值CMP DI,-1 ;音乐播放结束判断 JE END_MUSMOV BX,DS:[BP]CALL GENSOUND ;播放一个频率ADD SI,2ADD BP,2 ;获取下一频率值,及其播放时间 MOV AH,0BH ;判断键盘是否有键按下INT 21HCMP AL,0FFHJE INT9 ;有键按下则转去执行该指令JMP FREG ;无键按下则继续读取下一个频率值END_MUS:RETINT9:PUSHFPUSH AXPUSH DSPUSH ESPUSH CSPOP DSPUSH CSPOP ESIN AL,60H ;从键盘获取该键值ASCII码MOV AH,01HINT 21H ;读取并保存到AL中CMP AL,'X' ;若为‘X’则退出dos操作界面JZ X0CMP AL,'D'JZ A2CMP AL,'E'JZ A1;否则提示输入错误,重新开始INT9_QUIT:POP ESPOP DSPOP AXPOPFJMP FREGA1:POP ESPOP DSPOP AXPOPFADDRESS MUS_FREG1,MUS_TIME1MOV RATE,10000 ;设置减慢播放速度CALL MUSICJMP INPUTA2:POP ESPOP DSPOP AXPOPFADDRESS MUS_FREG1,MUS_TIME1MOV RATE,1000 ;设置加快播放速度CALL MUSICJMP INPUTINPUT:MOV AH,01HINT 21HCMP AL,'X'JZ RETU ;按下为‘X’则退出dosSHOW INFO4SHOW INFO5JMP INPUT ;否则提示输入错误,重新开始X0:POP ESPOP DSPOP AXPOPFJMP RETURETU:MOV AH,4CHINT 21HMUSIC ENDPCODE ENDSEND START3程序的调试与运行3.1调试程序调试过程与编写程序的过程紧密相关,具体过程也就是把源程序放在MASM for Windows中进行编译,如果源程序中有错误,编译时系统就会给出提示,根据系统提示可以找到是哪一行出现了问题,对其进行分析并修改,重新编译,直到编译时系统对那一行没有给出提示为止。