版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计实验报告 键盘,以计算机键盘的相应键模拟钢琴键盘进行乐曲的演奏。在PC机键盘上按键,屏f(1)、屏幕设置MOVAH,00HMOVAL,0DHINT10HMOVBL,00H(2)、钢琴绘制,绘制键盘时的坐标的确定:STLXDW61,72,83,94,105,116;起点横坐标ST_MXDW127,138,149,160,171,182,193ST_HXDW204,215,226,237,248,259,270STYDW;起点纵坐标ED_LXDW60,71,82,93,104,115,126;终点纵坐标ED_MXDW137,148,159,170,181,192,203ED_HXDW214,225,236,247,258,269,280EDYDW90;终点纵坐标BT_XDW57,68,90,101,112;起点横坐标DW134,145,167,178,189DW211,222,244,254,265BT_YDW50;起点纵坐标BD_XDW64,75,97,108,119;终点横坐标DW141,152,174,185,196DW218,229,251,262,273BDYDW70;终点纵坐标DRAWMACROSTART_X,START_Y,END_X,END_Y,COLORDRAWSQREMACROSTART_X,START_Y,END_X,END_Y,COLOR(3)、琴键绘制PIANO_DRAWPROCNEAR(4)、屏幕显示字符SHOW_CHARPROCNEAR、SHOW_TEXTPROCNEAR(1)、手动演奏GEN_HANDPROCNEAR(2)、自动播放发声程序GEN_AUTOPROCNEAR(3)、延时程序WAITFPROCNEAR(4)、自动播放歌曲SCAN_SONGPROCNEAR、PLAY_SONGPROCNEAR(5)、C/D调及对应的低、中、高频率分别载入LOAD_AUDIOPROCNEARCDSCANTUNEPROCNEAR;需求分析与设计是透明的,我们只需要调用显示驱动程序INT10H。钢琴主要是由矩形、直。钢琴键盘的动态显示则是同步于键盘的按键有按下和弹起的动画。这部分绘制琴键:PIANO_DRAWPROCNEARLEADIEDLX琴键结束点有效地址NEXT_DRAW:DRAWSISTYDIEDY,0FH;调用宏定义画白键DRAW[SI],90,[DI],93,07H;阴影IADDDI,2LEASIBTX;取黑色琴键起始点的有效地址LEADIBDX键结束点的有效地址NEXT_BLOCK:DRAWSIBTYDI],BD_Y,00H;调用宏定义画黑色琴键IADDDI,2GENHANDPROCNEAR奏发声程序AXSHBXPUSHCXSHDXDIMOVDX,12H;1.1931Mhz/给定的频率=12348h/给定频率=计数初值UTHALAITLLWAITFINAL,60H;读取键盘扫描码,按下和放开都有相应的扫描码,放0h>80hTESTALH键是否放开POPDI存器状态POPDXPOPCXPOPBXOPAXGEN_HANDENDPRMOVCXDELAYTIMEAITFWAITFENDP为1.19318MHz。通过设置计数值可以产生各种频率的声音。与此同时,许多输DPROCNEARHMOVDX,12H;1.1931Mhz/给定的频率=12348h/给定频率=计数初值OUTHAL器送处值AITLLWAITFTESTALH是否放开H间POPDI存器状态DXOPCXXHANDENDP(1)、为所要播放的乐曲的定义一个频率表和节拍表。MUS_FREQ2DW262,294,330,262,262,294,330,262;两只老虎DW330,349,392,330,349,392,392,440DW392,349,330,262,392,440,392,349DW330,262,294,196,262,294,196,262DW262,294,330,262,262,294,330,262DW330,349,392,330,349,392,392,440DW392,349,330,262,392,440,392,349DW330,262,294,196,262,294,196,262DW0MUSTIMEDW25,25,25,25,25,25,25,25,25,2512,12,12,25,2512,12,12,12,25,25,25,25,50,25,25,5025,25,25,25,25,2512,12,12,25,2512,12,12,12,25,25,25,25,50,25,25,50(2)、分表将两个表的偏移地址放入SI和BP中PMUSTIMEIMUSFREQ(3)、从表中读出的音符频率放入DI中,取出音符的持续时间(10s的倍数)放入BX中。MOVDI,[SI]MOVBXBP](4)、最后调用GEN_AUTO子程序发出声音。CDRAWMACROSTART_X,START_Y,END_X,END_Y,COLORLOCALDRAW_NEXTPUSHAXPUSHBXPUSHCXPUSHDXMOVMOVMOVMOVMOVDRAW_NEXT:AH,0CHAL,COLORBH0CX,START_XDX,START_YCX,END_XMOVCXSTART_XXPCXDRAWSQREMACROSTARTXSTARTYENDXEND_Y,COLOROCALROWUPROWDOWNRANKLEFTRANKRIGHTXSHCXDXPUSHSIHCHHCHCOLORBH,0CX,START_XDX,START_YCX,START_XSI,END_XVMOVMOVROWRANK_MOVMOVROW_DOWNWNVTYVTDX,END_Y;比较行是否画完RANK_LEFT;画另一边POPSIXPCXSEGMENTSTART_COLDB?TEXTDB起始行DB始列DBAHDB'*********ThisPianoFFHWelcome!Haveagoodtime!***',0FFHDB'DreamPiano',0FFH,'LiuZhuHuiANDLiuJing',0FFH,0FFH;显示字DB0FFH,'1a.s.d.f.g.h.jTOMAKEMUSIC'DB0FFH,'2F2~F5TOPLAYAMUISC'DB0FFH,'3shiftand+/-TOup/downTHEMUSIC'DB0FFH,'4L/RSHIFTTOHIGHT/LOW.';DB10DUP(4DUP(0DBH),4DUP(20H)),0FFHPDUP(20H),4DUP(0DBH)),0FFHPDUP(0DBH),2DUP(20H)),0FFHPDUP(20H),2DUP(0DBH)),0FFHPDUP(0DBH),2DUP(20H)),0FFHDUP(2DUP(20H),2DUP(0DBH)),0FFHDB00STLXDW,72,83,94,105,116;起点横坐标ST_MXDW127,138,149,160,171,182,193ST_HXDW204,215,226,237,248,259,270W60,71,82,93,104,115,126;终点纵坐标WW8,269,280ED_YDW90;终点纵坐标BTXDW7,68,90,101,112DW45,167,178,189DW2,244,254,265BTYDW50;起点纵坐标BDXDW4,75,97,108,119;终点横坐标3BDYDWDW131DW221,248,278,294,330,371,416;低音MIDDW262MIDDDW441,495,556,589,661,742,833;中音HGHDW523HGHDDW,990,1112,1178,1322,1484,1665;高音KEYFLAGDB1;标记低(0)、中(1)、高(2)音键SONGDW演奏的曲目AUDIODW1;标记低音{1},中音{2},高音{3}MUS_FREQ1dw196,220dw220,196dw262,220,262dw262,220dw294,330,392dw330dw220,196,220dw220dw440dw196,220dw262dw440dw330,294wdw440dw330,392wdw440dw330,294wdw330dw392dw262dw262,-1MUSTIME1dw40,40dwdw,40dwdw,40dw,40dwdwdwdwdwMUSFREQDW262,294,330,262,262,294,330,262;两只老虎DW9,392,330,349,392,392,440DW9,330,262,392,440,392,349DW2,294,196,262,294,196,262DW4,330,262,262,294,330,262DW9,392,330,349,392,392,440DW9,330,262,392,440,392,349DW2,294,196,262,294,196,262DW0MUSTIMEDW25,25,25,25,25,25,25,25,25,25DW25,50,12,12,12,12,25,25DW12,12,25,25,25,25,50,25,25,50DW25,25,25,25,25,25,25,25DW25,50,12,12,12,12,25,25DW12,12,25,25,25,25,50,25,25,50MUSFREQDW262,262,294,330,330,349,392,440,392,330DW9,330,294,349,330,294,262DW2,294,330,330,349,392,440,392,330DW9,330,294,330,294,262,196DW9,330,294,196,196,349,330,294,262DW9,330,294,196,196,349,330,294,262DW2,294,330,330,349,392,440,392,330DW9,330,294,330,294,262DW0MUSTIMEDW3DUP(25,2DUP(12)),50DW2PDUP)DW3PDUP0DW2PDUP(12)),2DUP(50)DW3PDUP0DW3PDUP0DW3PDUP0DW2DUP(25,2DUP(12)),50MUSFREQDW262,262,294,330,330,294,262,262,220,196DW4,330,294,262,294DW,330,330,294,294,262,220,220,294,262,262,220,196DW0,220,262,262,294,294,262,220DW0,294,262,262,294,262,220,196,220DW0,262,294,330,392,294,330,262,294,262,220DW4,247,220,196,196DWDUP),330,392,440,440,392,330DWDUP),392,392,330,294DW2,440,392,330,294,330,294,262,220DWDUP),262,220,196DWDUP,392),2DUP(330,294),262,220DWDUP),262,220,392DW0USTIMEDWDUP10,10),5020,10,20,10,10,3DUP(20,10),20,20,8010,10,4020,10,20,20,10,5,5,10,10,40DW2DUP(20,10,10),10,5,5,20USFREQUSTIMESDUP10),40DUP10),4040,100DW2,440,330,392,29492,220,262,330,2940,294,220,2204,247,220,262,1960,196,26223,440,39294,262,292,33094,440,330,3920DWDUP2,75),3DUP(12),25,12,25,6,6,12,75;#1,2DUP12,12,75ENTASSUMEDSDATACS:CODEMAINPROCFARLLINITNEW_SCAN:CALLSCANKEYCMPSONG是否按下了自动播放的歌曲键JEHANDPLAY播放CALLPLAYSONG乐JMPNEWSCAN新扫描有无键按下PLAYCMPKEYNUM否手动演奏JZNEWSCAN扫描有无键按下PUSHBX手动,则进行键盘清理OVBXKEYNUMCALLKEYDOWN序中PUSHSIMOVSI,KEYNUMMOVDI,[BX+SI]CALLGENHANDPOPSIPUSHBXMOVBX,KEYNUM;在屏幕上显示弹起状态CALLKEY_UPPOPBXMAINENDPGEN_HANDPROCNEAR;手动演奏发声程序PUSHAXPUSHBXPUSHCXPUSHDXPUSHDIMOVDXH.1931Mhz/给定的频率=12348h/给定频率=计数初值UTHALHALAITLLWAITFTESTAL0H;查询键是否放开间POPDI寄存器状态POPDXPOPCXPOPBXPOPAXGEN_HANDENDPGEN_AUTOPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXPUSHDIOUT43H,ALMOVDXH.1931Mhz/给定的频率=12348h/给定频率=计数初值LINAL,61HMOVAL,AHOUT42H,ALINAL,61HMOVAH,ALLWAIT:ITFJNZWAIT毕MOVALAH;完毕则关闭扬声器POPDI器状态XPCXOENDPAITFPROCNEARMOVCXDELAYTIMEAITFWAITFENDPODRAWPROCNEARLEASISTLX点有效地址LEADIEDLX结束点有效地址EXTDRAWDRAWSISTYDI,ED_Y,0FHDRAWSI[DI],93,07H;阴影ADDSI;下一个键ADDDI2LEASIBTX点的有效地址LEADIBDX点的有效地址EXTBLOCKDRAWSIBTYDI],BD_Y,00H;调用宏定义画黑色琴键ADDSI;下一个键ADDDI2ODRAWENDPWNPROCNEARPUSHSIDICALLLOAD上的位置XDRAW[SI+BX],92,[DI+BX],94,07HPOPDIPOPSIKEY_DOWNENDPKEY_UPPROCNEARPUSHSIPUSHDICALLLOAD;载入所弹起键在屏幕上的位置DRAW[SI+BX],90,[DI+BX],93,07H;恢复阴影DRAW[SI+BX],93,[DI+BX],94,05H;恢复背景色POPDIPOPSIKEY_UPENDPLOADPROCNEARCMPKEYFLAG,00H;判断是否是低音键OADHGHLEASI,ST_LX;载入低音键起始坐标首地址LEADI,ED_LX;载入低音键结束坐标首地址DENDLOAD_HGH:CMPKEYFLAGH断是否是高音键DMIDLEASI,ST_HX;载入高音键起始坐标首地址LEADI,ED_HX;载入高音键结束坐标首地址JMPLOADENDSISTMXDIEDMX键结束坐标首地址NEARMOVSI,100MOVDI100MOVKEYNUM00;赋初值MOVAH;读键盘MOVDLAHCALLSCAN_SONG;判断是否是自动播放键(大键盘数字键1~5)CMPAHH键JNEFLAGSCANLEXITSCANMOVAH2H;读键盘状态字节ANDDH02HSLOWANDDH01HSHGHPSMIDWMOVAUDIOMOVKEYFLAG0JMPKEY理MOVAUDIOMOVKEYFLAG2JMPKEY处理MOVAUDIOKEY_1:KEY_6:GKEY判断KEYNUM存标志KEY_3KEY_4KEY_5KEY_6JNEKEY_7MOVKEYNUM10KEY_7:MOVKEYNUM12NEAR;判断是否是自动播放键(键1~5),并保存标志变量(song)MOVSONG00;赋初始值ONGENDOVALAHMOVAH0HMOVSONGAX;存入标志码ONGPROCNEARPPUSHSIXDINEGOLEABPMUSTIME据首地址LEASIMUSFREQ数据首地址SONGLIGHTOFFDRAW,257,46,0EHTIMEFREQSONGLIGHTOFFDRAW,263,46,0EHTIMEFREQSONGLIGHTOFFDRAW,269,46,0EHTIMEFREQSONGLIGHTOFFDRAW,275,46,0EHTIMEFREQMOVAH1HCMPAH,1CH;判断是否为enter键(1CH为enter键的扫描码)INUEJMPPLAYEND放NUEMOVAH,0CH;清除键盘缓冲区字符PDIJEPLAYENDGENAUTOADDSI,2ADDBP;下一频率QPLAYENDCALLS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遵纪守法商业运营信誉承诺书5篇
- 软件开发流程与项目管理工具模板
- 中小学语文教育互动式教育方法研究指南
- 回复系统升级计划及影响范围回复函(6篇范文)
- 人力资源招聘与选才综合评估工具
- 市场营销数据分析实战技巧手册
- 采购需求及供应商信息管理模板
- 项目管理流程规范与执行指南指导书
- 员工教育培训成果承诺函(8篇)
- 蓝天白云的美丽景色写景(11篇)
- DB45T 1056-2014 土地整治工程 第2部分:质量检验与评定规程
- 熔铸车间管理制度
- 2025年华融金融租赁股份有限公司招聘笔试参考题库含答案解析
- -煤矿从业人员职业道德
- 铁塔拆除专项施工方案
- 无轨胶轮车司机培训
- 2017年中医院项目代建大纲
- 餐厨垃圾处理项目项目建议书可行性研究报告
- 通信工程建设标准强制性条文汇编(2023版)-定额质监中心
- 六年级下册劳动教学计划与教案
- (正式版)JB∕T 11108-2024 建筑施工机械与设备 筒式柴油打桩锤
评论
0/150
提交评论