收藏 分销(赏)

音乐程序专业课程设计.doc

上传人:快乐****生活 文档编号:2505182 上传时间:2024-05-30 格式:DOC 页数:37 大小:177.04KB
下载 相关 举报
音乐程序专业课程设计.doc_第1页
第1页 / 共37页
音乐程序专业课程设计.doc_第2页
第2页 / 共37页
音乐程序专业课程设计.doc_第3页
第3页 / 共37页
音乐程序专业课程设计.doc_第4页
第4页 / 共37页
音乐程序专业课程设计.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、微机原理课程设计设计题目:音乐演奏程序设计学 生 贾 高 强 班 级 09(秋)大专电子 学 号 指引教师 王 文 珍 兰州理工大学课程设计任务书学生 指引教师 班级 职称 一、 课程设计题目音乐演奏程序设计二、重要设计参数及技术指标本程序应用了BIOS中断功能字符显示和乐曲演奏程序。并运用计算机控制发声原理,在计算机中有一种可编程时间间隔定期器,它能依照程序提供记数值和工作模式,产生各种形状和各种频率记数定期脉冲,提供应系统各个某些使用。该乐曲点播程序曲一种主程序和4个子程序构成。其中前三个子程序为乐曲演奏子程序,接着是发声程序和清屏子程序,最后是一种回车换行程序。运用计算机控制发声原理,可

2、以编写演奏乐曲程序。 PC机上大多数都是由主板上8255(或8255A)可编程序外围 接口芯片(PPI)管理。PPI涉及三个8位寄存器,两个用于输入功能,一种用于输出功能。输入寄存器分派I/O端标语60H和62,输出寄存器分派I/O端标语位61H。由PPI输出寄存器0或1两位来控制扬声器驱动方式三、课程设计内容及工作量(一)设计计算阐明书 一份0.8-1.0万字(二)、图纸某些1、程序流程图 A0一张2音乐演奏程序设计电路图 A0一张(选做)四课程设计基本规定能准时独立完毕毕业设计规定所有内容,方案选取对的,论据充分,对设计中重要问题分析进一步,解决合理,有独立看法,能较好运用所学理论和提供资

3、料解决设计中问题,能独立查阅和对的引用中外文参照资料,阐明书文字通顺、清晰、选用数据论证合理、计算精确,图面整洁。五、进程安排序号重要任务时间备注1布置任务、准备参照资料0.5工作日 2原理图设计及绘制1工作日3查阅资料及程序1天4上机调试程序1天5撰写设计阐明书1工作日6 答辩0.5工作日课程设计进度检查表名称检查内容负责检查教师时间初期检查设计任务书、开题报告及总体方案指引教师中期检查有关设计内容指引教师后期检查课程设计检查系里教师六重要参照文献1沈美明,温冬婵,IBM-PC汇编语言程序设计(第2版),北京,清华大学出版社,5月2何超,汇编语言程序设计实验与习题解答(第1版),北京,机械工

4、业出版社,4月3蔡启先,王智文,黄晓璐,汇编语言程序设计实验指引(第1版),北京,清华大学出版社,3月4王爽,汇编语言(第2版)北京,清除大学出版社,4月5秦莲,汇编语言程序设计实训教程(第1版),北京,北京交通大学出版社,5月6贺红娟,汇编语言程序设计教程(第1版),北京,清华大学出版社,4月7秦然,汇编语言程序设计实训与解题指南(第2版),大连,大连理工大学出版社,10月8张开成,钟文龙,汇编语言案例教程(第版),北京,化学工业出版社,3月课 程 设 计 开 题 报 告1、本课题研究意义大多数状况下Linux程序员不需要使用汇编语言,由于即便是硬件驱动这样底层程序在Linux操作系统中也可

5、以用完全用C语言来实现,再加上GCC这一先进编译器当前已经可以对最后身成代码进行较好优化,确有足够理由让咱们可以暂时将汇编语言抛在一边了。但实际状况是Linux程序员有时还是需要使用汇编,或者不得不使用汇编,理由很简朴:精简、高效和libc无关性。假设要移植Linux到某一特定嵌入式硬件环境下,一方面必然面临如何减少系统大小、提高执行效率等问题,此时或许只有汇编语言能帮上忙了2、本课题基本内容简介汇编语言是计算机可以提供顾客使用最快而又最有效语言,也是可以用计算机所有特性能直接控制硬件唯一语言。通过这次实验规定咱们:(1) 理解通用发声程序。(2) 理解与掌握定期、计数、音乐、频率、时间之间关

6、系。(3) 学会用发声程序设计办法。(4) 学会用汇编编辑音乐程序。这里重要用到MASM来进行程序调试和运营,在程序测试通过后,最后运营查看最后成果。3、课程设计提纲:一 概述1 背景分析2 课程设计目3课程设计规定及功能二 总体方案设计1 设计思路2 程序流程图如下三 详细设计1 可编程时间间隔定期器82532 发声程序设计3 80x86时间延迟4 宏定义5 清屏子程序设计四 详细算法描述1 主程序表述2音乐解决程序详细描述五 程序调试与运营成果阐明六 使用阐明4、参照文献目录:1沈美明,温冬婵,IBM-PC汇编语言程序设计(第2版),北京,清华大学出版社,5月2何超,汇编语言程序设计实验与

7、习题解答(第1版),北京,机械工业出版社,4月3蔡启先,王智文,黄晓璐,汇编语言程序设计实验指引(第1版),北京,清华大学出版社,3月4王爽,汇编语言(第2版)北京,清除大学出版社,4月5秦莲,汇编语言程序设计实训教程(第1版),北京,北京交通大学出版社,5月6贺红娟,汇编语言程序设计教程(第1版),北京,清华大学出版社,4月7秦然,汇编语言程序设计实训与解题指南(第2版),大连,大连理工大学出版社,10月8张开成,钟文龙,汇编语言案例教程(第版),北京,化学工业出版社,3月5、指引教师审视意见:摘要汇编语言是一种功能很强程序设计语言,也是运用计算机所有硬件特性并能直接控制硬件语言。汇编语言,

8、作为一门语汇编语言言,相应于高档语言编译器,需要一种“汇编器”来把汇编语言原文献汇编成机器可执行代码。高档汇编器如MASM,TASM等等为咱们写汇编程序提供了诸多类似于高档语言特性,例如构造化、抽象等。在这样环境中编写汇编程序,有很大一某些是面向汇编器伪指令,已经类同于高档语言。当前汇编环境已经如此高档,虽然所有用汇编语言来编写windows应用程序也是可行,但这不是汇编语言长处。汇编语言长处在于编写高效且需要对机器硬件精准控制程序。 音乐演奏程序设计课程设计是在教学实践基本上进行一次大型实验,也是对该课程所学理论知识深化和提高。因而,规定咱们能综合应用所学知识,设计与制造出具备较复杂功能应用

9、系统,并且在实验基本技能方面上进行一次全面训练。通过详细问题分析、设计、调试、运营程序。在实际问题中锻炼提高自己,增长了对本门课程内容理解,锻炼了动手能力。就这个程序详细而言:懂得了音调与频率和时间关系,就可以按照乐曲曲谱将每个音符频率和持续时间定义成两个数据表;然后编写程序一次取出表中频率值和时间值,调用GENSOUDF程序发出各种声音。这个程序最后通过菜单所提示信息选用所欣赏音乐,是执行此程序后,会很有速且有效使扬声器接通并发出音频位896Hz声音。核心词: 汇编语言、 运营程序、 演奏、 调试AbstractThe CNC lathe machine frame is the impor

10、tant component. Used for cutting knife with tool clamping,therefore its structure directly affect the cutting machine cutting performance and efficiency. To a certain extent,the structure and properties of the cutter reflected machine design and manufacturing technology level. With the continuous de

11、velopment of CNC lathe,frame structure form was renovates ceaselessly. According to the change of the different ways of CNC lathe,the main frame system of rotary cutter,platoon type knife knife and automatic change device of various forms. For the first time since 1958 nc machining center has succes

12、sfully developed automatic change device,automatic change device of mechanical structure and control continuously improved and perfected. Automatically change device is processing center,its important in a variety of forms,the most common are:rotary cutter knives,replace the spindle change with the

13、sword and head for the knife knifsystem for automatic library.The design of lifting frame for spiral involved four cutter,the working principle of rotary cutter for mechanical nut and transposition. Working process can be divided into the frame lift,cutter,cutter positioning and transposable pressur

14、e etc. Several steps.Keywords:automatic rotary cutter numerical simulation automation tool CNC programming目 录一 概述21 背景分析22 课程设计目23课程设计规定及功能33. 133. 1. 243. 1. 34二 总体方案设计51 设计思路52 程序流程图如下:6三 详细设计71 可编程时间间隔定期器825372 发声程序设计83 80x86时间延迟94 宏定义105 清屏子程序设计11四 详细算法描述121 主程序表述122音乐解决程序详细描述123音乐解决程序详细描述14五 程序

15、调试与运营成果阐明15六 使用阐明17七 课程设计总结18参照文献19道谢20附录20 一 概述1 背景分析汇编语言是一种功能很强程序设计语言,也是运用计算机所有硬件特性并能直接控制硬件语言。汇编语言,作为一门语汇编语言言,相应于高档语言编译器,需要一种“汇编器”来把汇编语言原文献汇编成机器可执行代码。高档汇编器如MASM,TASM等等为咱们写汇编程序提供了诸多类似于高档语言特性,例如构造化、抽象等。在这样环境中编写汇编程序,有很大一某些是面向汇编器伪指令,已经类同于高档语言。当前汇编环境已经如此高档,虽然所有用汇编语言来编写windows应用程序也是可行,但这不是汇编语言长处。汇编语言长处在

16、于编写高效且需要对机器硬件精准控制程序。 大多数状况下Linux程序员不需要使用汇编语言,由于即便是硬件驱动这样底层程序在Linux操作系统中也可以用完全用C语言来实现,再加上GCC这一先进编译器当前已经可以对最后身成代码进行较好优化,确有足够理由让咱们可以暂时将汇编语言抛在一边了。但实际状况是Linux程序员有时还是需要使用汇编,或者不得不使用汇编,理由很简朴:精简、高效和libc无关性。假设要移植Linux到某一特定嵌入式硬件环境下,一方面必然面临如何减少系统大小、提高执行效率等问题,此时或许只有汇编语言能帮上忙了音乐演奏程序设计课程设计是在教学实践基本上进行一次大型实验,也是对该课程所学

17、理论知识深化和提高。因而,规定咱们能综合应用所学知识,设计与制造出具备较复杂功能应用系统,并且在实验基本技能方面上进行一次全面训练。通过详细问题分析、设计、调试、运营程序。在实际问题中锻炼提高自己,增长了对本门课程内容理解,锻炼了动手能力。就这个程序详细而言:懂得了音调与频率和时间关系,就可以按照乐曲曲谱将每个音符频率和持续时间定义成两个数据表;然后编写程序一次取出表中频率值和时间值,调用GENSOUDF程序发出各种声音。这个程序最后通过菜单所提示信息选用所欣赏音乐,是执行此程序后,会很有速且有效使扬声器接通并发出音频位896Hz声音。2 课程设计目汇编语言是计算机可以提供顾客使用最快而又最有

18、效语言,也是可以用计算机所有特性能直接控制硬件唯一语言。通过这次实验规定咱们:(1) 理解通用发声程序。(2) 理解与掌握定期、计数、音乐、频率、时间之间关系。(3) 学会用发声程序设计办法。(4) 学会用汇编编辑音乐程序。这里重要用到MASM来进行程序调试和运营,在程序测试通过后,最后运营查看最后成果。为了编写一种流行音乐乐曲演奏程序,分析时按照课程设计规定必要要有操作提示、输入和输出。在界面设计时应当追求和谐,可以使顾客便于使用该程序。并且按照课题规定最佳可以实现菜单式界面,进一步提高该程序界面和谐性。同步,在设计分析时也必要解决发声问题。分析设计时按照课本P383(10.4 通用发声程序

19、)所示设计办法解决发声问题。通过音乐程序设计熟悉并掌握用汇编语言编程办法和特点,借此来比较高档语言低档语言优缺陷,以便更好运用各种语言来开发应用软件通过实际动手能力培养,进一步熟悉汇编语言构造和用法。达到能独立阅读、编制和调试一定规模汇编语言程序水平,能用汇编语言纯熟地运用三大构造,进一步掌握各个指令功能,特别是转向指令,能掌握子程序定义及调试,涉及段间及段内调用,以及对的地运用DEBUG指令,进一步理解和掌握程序直接控制I/O方式。3课程设计规定及功能 3. 1在本次课程设计中,编写源程序,并规定实现如下功能:3. 1. 1采用位触发方式编写程序,使计算机发出音响并奏出几首可选乐曲。(1)

20、通过查阅有关资料,进一步理解程序直接控制I/O方式和位触发方式控制声音工作原理(两种方式概念及工作过程)。并规定如何实现,理解掌握其运营各自状况,在什么要状况下使用。(2) 一首乐曲是由不同频率和节拍音调构成,因而控制脉冲频率和持续时间是编写乐曲程序核心。依照已知音符频率对照表,给出乐曲频率表:设二分音符持续时间为0。5秒(50*10ms),50作为2拍计数值,给出乐曲节拍时间表。1(3) 用MASM进行调试,重复测试,不断重复测试各个功能,看与否会有程序运营错误。例如:极限值设立等。在不断测试程序直到对的时,测试工作才算完毕,可以供后来使用。3. 1. 2进一步学习运用定期器产生声音办法,使

21、计算机奏出乐曲。3. 1. 3 必要全面理解MASM 功能,并能纯熟使用MASM完毕汇编程序编译、调试、运营。3. 2 MASM软件简介3. 2. 1 MASM重要版本:微软发布了MASM6。15版本,日后浮现MASM 64位元版。6.15 版是放在 Visual C+ 6。0 Processor Pack 中。7.0 版是放在 Visual C+ 。NET 。7.1 版是放在 Visual C+ 。NET 。8.0 版是放在 Visual C+ 。NET ,它也可以组译 x64 程式码。3. 2. 2特点及功能简介:4. x 1980 年代末期最流行版本,诸多组合语言入门书都以它为范本。5.

22、 x 开始强化组译器简易指令(点指令),以简化程式架构。稍晚组合语言入门书亦大量运用此一版本。 6. x 版本为了增援 Windows,有几种重大特色:(1)增援 flat 与 386 以上 CPU保护模式。 整合 PWB(ProgrammersWorkBench) 开发环境。这软件在同步期 Quick BASIC 也找得到。 (2)增援 DOS Extender,内建 DOS/16M。 (3)开始增援 OS/2 与 WinAPI。 (4)简易指令加入流程控制论述,如 。IF、。While、。Exit。等。 (5)强化对外部函式库增援命令,如 proto 与 invoke 等指令,其中最核心是

23、将 proc 指令包装成符合高阶语言风格(增援 C 与 Pascal 风格)形式,且 invoke 指令重新包装 call 与 push/pop 指令,可以更直观、高阶地运用函式。这对呼喊高阶语言写成函式、特别是繁复 WinAPI 非常重要。 (6)masm 与 link 整合为 ML。(7) NMake makefile 描述构造也产生了巨大变化。二 总体方案设计1 设计思路 本程序应用了BIOS中断功能字符显示和乐曲演奏程序。并运用计算机控制发声原理,在计算机中有一种可编程时间间隔定期器,它能依照程序提供记数值和工作模式,产生各种形状和各种频率记数定期脉冲,提供应系统各个某些使用。该乐曲点

24、播程序曲一种主程序和4个子程序构成。其中前三个子程序为乐曲演奏子程序,接着是发声程序和清屏子程序,最后是一种回车换行程序。 1. 1定义频率表和时间表依照音阶表和简谱位演奏乐曲定义一种频率freg和一种节拍时间表time。频率表中数据可以才课本查到,节拍时间表中数据是延迟时间10ms倍数。1. 2将两个表偏移地址放入SI和DI LEA SL MUS_FREQ LEA BP DSMUS_TIME1. 3取频率和时间从表中取出音符频率放入DI,取出音符持续时间(事实上是10ms倍数)放入BX。 MOV DI,SI MOV BX,DS:BP频率表中最后一种数据1作为乐曲结束符,也可以用0或其她特殊值

25、来代替。1. 4调用SOUND子程序发出音调调用通用发声子程序GENSOUND发声音调。这个程序比较简朴,如果想演奏另一种乐曲,只需把freg和两个表中数据换成另一种乐曲频率和节拍时间就可以了。2 程序流程图如下: 图1 程序流程图初始化键盘输入结束符? Y菜单选取 N结束13? N DI频率表BX节拍表 Y调用GENSOUND 三 详细设计1 可编程时间间隔定期器8253在通用个人计算机中,有一种可编程时间间隔定期器8253,它可以依照程序提供计数值和工作方式,产生各种形状和各种频率计数/定期脉冲,提供应系统各个部件使用。本设计是运用计算机控制发声原理,编写演奏乐曲程序。在8253/54定期

26、器内部有3个独立工作计数器:计数器0,计数器1和计数器2,每个计数器都分派有一种断口地址,分别为40H,41H和42H.8253/54内部尚有一种公用控制寄存器,端地址为43H.端口地址输入到8253/54CS,AL,A0端,分别对3个计数器和控制器寻址.对8353/54编程时,先要设定控制字,以选取计数器,拟定工作方式和计数值格式.每计数器由三个引脚与外部联系,见教材第320页图9-1.CLK为时钟输入端,GATE为门控信号输入端,OUT为计数/定期信号输入端.每个计数器中包括一种16位计数寄存器,这个计数器时以倒计数方式计数,也就是说,从计数初值逐次减1,直到减为0为止.8253/54三个

27、计数器是分别编程,在对任一种计数器编程时,必要一方面讲控制字节写入控制寄存器.控制字作用是告诉8253/54选取哪个计数器工作,规定输出什么样脉冲波形.此外,对8253/54初始化工作还涉及,向选定计数器输入一种计数初值,由于这个计数值可以是8为,也可以是16为,而8253/5数据总线是8位,因此要用两条输出指令来写入初值.下面给出8253/54初始化程序段一种例子,将计数器2设定为方式3,MOV AL,10110110BOUT 43H,ALOUT 42H,ALMOV AL,AHOUT 42H,AL在IBM PC中8253/54三个时钟端CLK0,CLK1和CLK2输入频率都是1.193181

28、7MHZ. PC机上大多数I/O都是由主板上8255(或8255A)可编程序外围接口芯片(PPI)管理.关于8255A构造和工作原理及应用举例参阅教材第340373页.教材第364页”PC/XT机中扬声器接口电路”一节简介了扬声器驱动原理,并给出了通用发声程序.本设计正是基于这个原理,通过编程,控制加到扬声器上信号频率,奏出乐曲.2 发声程序设计2. 1 扬声器驱动方式 运用计算机控制发声原理,可以编写演奏乐曲程序。 PC机上大多数都是由主板上8255(或8255A)可编程序外围 接口芯片(PPI)管理。PPI涉及三个8位寄存器,两个用于输入功能,一种用于输出功能。输入寄存器分派I/O端标语6

29、0H和62,输出寄存器分派I/O端标语位61H。由PPI输出寄存器0或1两位来控制扬声器驱动方式。2. 1. 1 采用定期器方式: 它是运用8253/54定期器驱动扬声器。连接到扬声器上是2。从扬声器驱动系统图中可以懂得,GATE2与端口61HPBO相连,当PB0=1时,GATE2获得高电平,使定期器2可以在模板3下工作。定期器2OUT2与端口61HPB1=1是,语序OUT2输出信号到达扬声器电路。 当通道2用于发声是,普通采用模式3下,输出线为“1”和“0”时间各占计数时间一半,因而产生一系列间隔均匀脉冲。2. 1. 2 采用位触发方式程序直接控制PPI(8255A可编程序外围接口芯片)输出

30、控制寄存器(I/O端口位61H)第一位,使该位按所需频率进行1和0交替变化,从而控制开关电路产生遗传脉冲形,这些脉冲经放大后驱动扬声器发出声音。如果控制着一脉冲波形脉宽和长度就可以产生不同频率和不同音长声音。乐曲是按照一定高低、长短和强弱关系构成音调。在一首乐曲中,每个音符音高和音长与频率和节拍关于。构成乐曲每个音符频率值和持续时间是乐曲程序发声所需要两个数据。音符频率可以从乐谱中查到,但事实上送入计数器2是输入频率1。1931MHz与音符频率相除值,通过发生程序SOUNDF前半某些就是完毕这个计算,并将计数值送入计数器2功能。 音符持续时间是依照乐曲速度及每个音符节拍数来拟定。在4/4(四四

31、拍)中,四分音符为1拍,每小节四拍,全音符持续4拍,二分音符持续2拍,四分音符持续1拍,八分音符持续半拍等。如果给全音符分派1s(100*10ms)时间,则二分音符持续时间为0。5s(50*10ms),四分音符持续时间为0。25s(25*10ms),八分音符持续时间为0。125s(12。5*10ms)。懂得了音调和频率关系,就可以按照乐曲乐谱将每个音符频率和持续时间定义成两个数据表;然后编写程序依次取出表中频率值和时间值,调用程序发出各种声音。53 80x86时间延迟运用CPU循环执行一条或几条指令来产生延迟时间是最惯用 一种办法,但对8088/86,80286,80386,80486以及pe

32、ntiumIV来说,由于它们工作频率不同及有些指令执行周期差别,执行同样延迟程序,产生延迟时间都不同样。为了建立一种与解决器无关时间延迟,1BM采用了一种运用硬件产生时间延迟办法,即通过监视端口61HPB4,使PB4每15.08us触发一次,以产生一种固定不变时间基准,。下面WAITF程序就是一种产生N x 15.08us 时间延迟程序。调用WALTF子程序时,CX寄存器必要装入15.08us倍数N。CX =15.08us倍数WAITF PROC NEAR PUSH AXWALTF1:IN AL,61H AND AL,10H ;检测PB4状态 CMP AL,AH ;与否发生变化 JE WAIT

33、F1 ;等待变化 MOV AH ,AL ;存入新PB4状态 LOOP WAITF1 ;循环,直到CX 0为止 POP AX RETWAITF ENDP 当CX中计数值N663时,调用WAITF子程序,可延迟10ms,若要延迟1s,可调用WAITF子程序100次,若要延迟0.5s,可调用WAITF子程序50次,依从类推,只要设立WAITF子程序调用次数,就可获得所需延迟时间。4 宏定义宏是源程序中一段有独立功能代码程序。它只需要在源程序中定义一次,就可以多次调用它,调用时只需要用一种宏指令语句就可以了。 宏定义是用一组微操作来实现。其格式是:macro name MACRO dummy para

34、meter list ENDM其中MACRO和ENDM是一对伪操作。这对伪操作之间是宏定义体是一组有独立功能程序代码。宏指令名(macro name)给出该宏定义名称,调用时就是用宏指令名来调用该宏定义。宏指令名第一种符号必要是字母,其后可以跟字母、数字或下划线字符。其中哑元表(dummy parameter list)给出了宏定义中所能用到形式参数(或称虚参),每个亚元之间用逗号隔开。经宏定义后宏指令就可以在源程序中调用。这种对宏指令调用称为宏调用,宏调用格式是:macro name actual parameter list实元表(actual parameter list)中每一项为实元

35、,互相之间用逗号隔开。 当源程序被汇编时,汇编程序将对每个宏调用做宏展开。宏展开就是用宏定义取代原程序中宏指令名,并且用实元取代宏定义中哑元。在取代时,实元和哑元是一一相应,即第一种实元取代第一种哑元,第二个哑元取代第二个哑元以此类推。普通来说,实元个数应当和哑元个数相等,但汇编程序并不规定她们必要相等。若实元个数不不大于哑元个数,则多余实元不予考虑;若实元个数不大于哑元个数,则多余哑元个数做“空”解决。6 在程序中,咱们运用宏定义来实现字符串输出功能,这样在输出提示语言时,不用每次都写一段很长代码,而只需要变化宏定义中参数即可。 详细宏定义代码如下:SHOW MACRO b LEA DX ,

36、 b MOV AH,9 INT 21H ENDM若要调用时HELLO字符串,只须一句语句: SHOW HELLO 这里需要注意是,宏定义结束使用核心字NEDM,而不子程序结束时ENDP。5 清屏子程序设计屏幕其实行列不为(0,0)结束行列不为(24,79),则屏幕上只有指定一某些具备上卷功能,这个屏幕伤某些区域叫做窗口(window)像这样窗口可以在屏幕上设立各种,这些窗口都可以独立使用。如果上卷超过指定窗口顶部,这些行内容就消失,出当前窗口底部新行被填为空格,其属性用BH寄存器决定。如果AL=0,则实现完毕工作是清晰屏幕功能,它将按AL中Blank字符(0)使指定窗口为空白。CLEAR PR

37、OC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,6 MOV AL,0 MOV CH,0MOV CL,0 MOV DH,48 MOV DL,158 MOV BH,7 INT 10H POP DX POP CX POP BX POP AX RETCLEAR ENDP四 详细算法描述1 主程序表述code segmentassume cs:code,ds:databegin:mov ax,data mov ds,axnext:dispmsg msgmenu dispmsg msgchoose;提示菜单及输入数字inputbegin:mov ah,01h

38、int 21h cmp al,q ;输入q则退出 je exit cmp al,1 ;比较数字4? ja doagain and ax,000fh;将ASCII码转换成数字,以便背面指向table表里相应地址 dec ax ;减1,相应地址 shl ax,1 ;相称于ax*2,由于table里相邻偏移地址是2 mov bx,ax jmp tablebx ;间接转移:IP-table+bx跳到table里面相应程序段exit: mov ah,4ch int 21h2音乐解决程序详细描述music1:dispmsg msgdoing mov si,offset freq_dahai mov di,

39、offset time_dahaim1: mov cx,si cmp cx,-1 je next mov bx,di call gensound add si,2 add di,2 jmp m1music2:dispmsg msgdoing mov si,offset freq_dongfengpo mov di,offset time_dongfengpom2: mov cx,si cmp cx,-1 je next mov bx,di call gensound add si,2 add di,2 jmp m2music3:dispmsg msgdoing mov si,offset fr

40、eq_dashetou mov di,offset time_dashetoum3: mov cx,si cmp cx,-1 je xx jmp xx1xx: jmp nextxx1: mov bx,di call gensound add si,2 add di,2 jmp m3 3音乐解决程序详细描述 gensound proc near push dx mov al,0b6h ;向计数器写控制数 out 43h,al ;方式3、双字节写和二进制计数方式写控制口 mov dx,08h ;设立被除数 mov ax,3208h div cx ;其商为预置值 out 42h,al ;先送LSB

41、mov al,ah out 42h,al ;后送MSB in al,61h ;读端口原值 mov ah,al or al,3 out 61h,al ;接通扬声器l2: push dx push ax mov dx,8h mov ax,0f05hs1: sub ax,1 sbb dx,0 jnz s1 pop ax pop dx dec bx jnz l2 mov al,ah ;写回61h端口值,关闭扬声器 out 61h,al pop dx retgensound end五 程序调试与运营成果阐明4. 1执行程序时,顾客界面如下: 5. 2、歌曲选取“1”时,下图所示:(张宇生大海) 5. 3、歌曲选取“2”时,下图所示:(周杰伦东风破) 5. 4、歌曲选取“3”时,下图所示:(吴克群大舌头) 5. 5输入“q”程序返回DOS环境5. 6输入其她未定义字符,则显示出错六使用阐明

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服