欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    汇编语言课程设计论文.doc

    • 资源ID:17641727       资源大小:198.50KB        全文页数:19页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言课程设计论文.doc

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流汇编语言课程设计论文.精品文档.目 录一概述3二总体方案设计6三详细设计9四程序的调试与运行结果说明13五课程设计总结14附录.15参考文献24一 概述 汇编语言是计算机能够提供给用户使用的最快而有效的语言,也是能够利用计算机所有特性并能直接控制硬件的唯一语言。借助于汇编程序,计算机本身可以自动地把 汇编源程序翻译成用机器语言表示的目的程序,从而实现了程序设计工作的部分自动化。1课程设计的目的1理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养综合运用所学知识独立完成课题的能力。3培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。4掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。5掌握利用单片机接口技术解决问题的基本方法2课程设计的要求1、 需要的基本知识与技能。 具备汇编语言设计、编写、调试和运行程序的方法和技巧。在PC机上运行汇编程序需要经过以下几个阶段:编辑源程序。利用文本编辑工具编辑源程序,生成一个汇编语言的纯文本文件。文件的扩展名为.ASM汇编源程序。用汇编器汇编源程序生成目标代码文件,目标代码文件的扩展名是.OBJ,汇编器还可以生成列表文件和交叉参考文件。汇编器相当于高级语言中的编译器。汇编语言按照汇编语言的语法检查源程序,如果源程序语法有错误,汇编器就不生成目标代码文件,这时,必须重新编辑源程序,修改语法错误。当发现源程序有的行含有不确定因素,汇编器会给出警告信,但按却省处理方法生成目标代码文件。此时,可以重新编辑源程序,消去不确定因素。连接目标程序。利用连接器连接目标代码程序和库函数代码生成可执行程序文件。一般单个模块的连接可以顺利地生成可执行程序文件。当多个模块连接,或者库函数连接时,如果在目标代码中找不到所需的连接信息,连接器就会发生错误提示信息,而不是生成可执行文件。这时,这就要重新编辑源程序,并汇编程序。调试可执行程序。程序的动态调试是在形成可执行文件后,针对可执行程序进行的。DEBUG是简单的动态调试工具,利用调试工具动态的调试程序,找出程序中的问题,那么就要重新编辑,汇编源程序。2、 尚未掌握的知识点。有时在程序中定义了较多的宏,或者可以把自己编译中常用的宏定义建立一个独立的文件,这个只包含若干定义宏文件的文件可称为宏库,通常用扩展名MAC或INC来表示。当应用程序中需要用到宏库中的宏定义时,只需要用语句说明。有时汇编语言程序需要连续重复地完成相同或者几乎完全相同的一组代码,这时,可使用重复汇编。汇编程序把重复模块代码重复几次,每次重复把重复块中的哑元用自变量表中的一项取代,下一次取代一次,重复次数由自变量表中的自变量个数来确定。条件汇编中,汇编程序能够根据条件把一段源程序或者把它排去在外,这里用到条件伪操作。条件伪操作可以用在宏定义体内,也可以用在宏定义体外,并且可以嵌套任意次。模块化程序设计方法是按照各部分程序所实现的不同功能把程序划分成为多个模板。各个模板在明确各自的功能和相互间的约定后,就可以编制和调试程序,最后把它们连接起来形成一个大程序,子程序结构是模块化程序设计的基础。子程序相当于高级语言中的过程和函数。在一个程序的不同部分,往往就要用到类似的程序段,这写程序段的功能个结构形式都相同,只是有的变量赋值不同,此时就可以把这些程序写成子程序形式,以便需要时调拥它。计算机中有一个可编程时间间隔定时器8253/54,它能根据程序提供的计数值和工作模式,产生各种计数/定时脉冲,提供给系统的各个部分使用。先要设定控制字,以选择计数器,确定工作模式和计数的值。每个计数器由3个外引腿与外部联系,在对任一个计数妻编程时,首先将控制字节写入控制寄存器。控制字的作用是告诉8253/54选择那一个计数器工作,要求输入什么样的脉冲波形。另外对其初始化工作好包括,向选定计数器送一个初值。PC机上的大多数I/O都是主板的8255的可编程外围接口芯便管理的,PPI包括三个8位寄存器,两个用于输入功能,一个用于输出功能。利用CPU产生延迟时间是最常用的方法,但是对于不同的计算机,它们产生的延迟时间都是不一样的。组成乐曲的每个音符的频率和持续时间是乐曲程序发声所需要的两个数据。音符的持续时间是根据乐曲的速度及每个音符的节拍来确定的。在4/4中,四分音符为一拍,每小节四拍,全音符持续四拍,四分音符持续一拍,八分音符持续半拍等。3、 教师对本题目所提出的要求等。 (1)重视实验方案设计 (2)认真作好实验准备 (3)仔细观测实验现象,如实记录实验数据 (4)分析故障原因,精心排除故障二 总体方案设计主程序流程图: 开始输入字符 判断是否为Q Y N判断是否为A 结束 Y N 判断是否为B调用宏ADDRESS Y N 判断是否为CMusic子程序调用宏ADDRESS Y NMusic子程序Clear子程序调用宏ADDRESS Music子程序图1 主程序流程图Music子程序流程图:DI= -1返回DOS界面并重新输入字符GENSOUND子程序取下一频率值和下一时间值开始结束 图2 Music子程序流程图这次课程设计的设计思想是在熟练掌握汇编程序的设计方法的基础上,利用通用发生程序编写音乐程序组成音乐的每个音符的频率值和持续时间是音乐程序发声所需要的两个数据,根据音调与频率和时间之间的关系,把要编辑的音乐的每个音符的频率和持续时间定义成两个数据表,进而把它们写入通用发声程序,音乐程序就完成。在编制此音乐演奏程序时,应该知道ROM BIOS 中有个BEEP子程序,这能根据BL中组出的时间计数值控制8254定时器,产生持续时间为1个或几个0.5秒,频率为896HZ的声音,我们可以利用并修改BEEP,使其产生任一频率的声音。首先要了解计算机是如何产生声音和乐曲的。找出相关程序源代码,弄清楚各功能的环节间的联系、联接方法,搞清楚单调与频率和时间的关系,利用计算机控制发声的原理,依照基本的算法思想写程序,测试,更正,扩充功能,修饰细节。本次设计在具体设计过程中的整体设计思路如下:该程序主要分成1根据音阶表和简谱为演奏的乐曲定义一个频率表mus_freq和一个时间表mus_time。2分别将两个表的偏移地址放入SI和BP。lea si, mus_freqlea bp, ds:mus_time3从表中取出音符的频率放入DI,取出音符的持续时间(实际上是10ms的倍数)放入BX。mov di, simov bx, ds:bp频率表中最后一个数据-1作为乐曲的结束符,也可用其他的特殊值来代替。4调用通用发声子程序SOUNDF发出音调。这个程序比较简单,如果想演奏另一个乐曲,只需把mus_freq和mus_time两个表中的数据换成另一个乐曲的频率和节拍时间就可以了。该算法的整体思路是在这个设计中用到了BEEP通用发声程序,我们利用对BEEP程序的修改让它产生任何一种频率的声音,也可以让声音的持续时间更容易被调整 在编译的过程中,用到了子程序调用,分别根据输入调用music1,music2,music3程序还要调用子程序gensound发出音调,主要特点是程序简单明了,有良好的交互界面。程序的主要功能是给用户提供三首已经写好的短曲,根据用户的选择演奏乐曲,演奏完一首乐曲后跳回起始状态,如此循环,直到用户输入结束的信息为止。本程序设计过程的整体设计思路是通过定义数据段,堆栈段和代码段实现程序的各种要求。其中堆栈段是为乐曲的音调及频率的数据分配空间;数据段是记录程序运行过程中所需的信息,包括字符信息,单调数据,音频数据;代码段则是程序算法部分, 通过对各数据的调用,实现音乐演奏功能。我所承担的部分设计工作是做出该程序的设计的欢迎界面并阅读程序源代码,弄清楚各功能的环节间的联系、联接方法,搞清楚单调与频率和时间的关系。依照基本的算法思想写程序,测试,给源代码润色。5系统的主要功能给用户提供三首已经写好的短曲,根据用户的选择演奏乐曲,演奏完一首乐曲后跳回起始状态,如此循环,直到用户输入结束的信息为止。三 详细设计1数据段定义数据段分别定义了INFO1、INFO2、INFO3 、INFO4、INFO5各字符串分别显示程序运行之初对用户的提示。MUSLIST 中显示用户能选择的三首歌曲列表。程序用MUS_FREG、MUS_TIME分别定义了音乐频率和节拍。使得发声程序可以按照理想的要求发出连续的乐曲。节拍和频率定义原理如下:乐曲是按照一定的高低、长短和强弱关系组成的音调,在每一首乐曲中,每个音符的音高和音长与发声系统中的频率、节拍有关。可参考下表:音名CDEFGABCDEFGABC唱名12345671234567i频率(HZ)131147165175196220247262294330349392440492523其中,低音阶从低音C(131HZ)到中央C(262HZ),高音阶从中央C(262HZ)到高音C(523HZ)。组成乐曲的音符的频率值和持续时间是乐曲程序发声所必需的两组数据,频率可以查上表,音符的持续时间根据乐曲的速度及每个音符的节拍数来确定。在4/4拍中,四分音符为一拍,每小节四拍,全音符持续四拍,二分音符持续二拍,四分音符持续一拍,八分音符持续半拍。如果给全音符分配1秒(100*10ms)的时间,则二分音符持续时间为0.5秒,四分音符持续时间为0.25秒,八分音符持续时间为0.125秒。知道了音调及频率、时间的关系后,可以按照乐曲的乐谱将每个音符的频率和持续时间定义为两个数据表,然后编写程序依次取出表中的频率值和时间值。“玛丽有只小羊羔”的乐谱如下:3 2 1 2 | 3 3 3 | 2 2 2 | 3 5 5 | 3 2 1 2 | 3 3 3 3 | 2 2 3 2 | 1 | 可设置该乐曲的频率表如下:MUS1_ F DW 330,294,262,294,3DUP (330)DW 3DUP (294),330,392,392 DW 330,294,262,294,4DUP (330)DW 294,294,330,294,262,-l设置该乐曲的节拍时间表如下:一般延迟时间取10ms的倍数。MUSlT DW 6 DUP (25*8),50*8 DW 2 DUP (25*8,25*8,50*8)DW 12 DUP (25*8),100*82主界面设计主界面的设计包括设置文本的显示方式,设置背景颜色,设置图形欢迎界面的显示方式。(1)本次设计文本的显示方式主要运用BIOS功能调用10号中断0号功能MOVAH,0HMOVAL,08HINT10但在此功能调用过程中,若与主机型号不符则调试不成功,在本次设计中由于找不到与主机型号相符的显示文本,故采用了默认文本的显示方式。(2)本次设计背景的颜色,并未采用传统的BIOS功能调用而是先定义160×200个空格 然后调用BIOS中断的13号功能输出空格,并且对空格进行颜色定义。MOV ES,AX MOV BP,OFFSET SPACE MOV DX,0000H MOV CX,32000D MOV BX,00A1HMOV AX,1300H INT 10H(3)主界面设计图形的输出是静态的,是通过文本格式画出来的。STRING DB ' | ',10,13 DB ' | ',10,13 DB ' # ',10,13 DB ' # O _ # ',10,13 DB ' # /_. _| Piano | # ',10,13DB '# | |_| # ',10,13DB ' # # _ _| # # ',10,13DB ' * _ * ',10,13DB ' * A>mary have gaoyang * ',10,13DB ' * B>tai hu chuang * ',10,13DB ' * C> liang zhi lao hu * ',10,13DB ' * Q> exit * ',10,13DB ' * ',10,13DB ' O O ',10,13DB ' O | O O | O ',10,13DB ' _|/_ _|/_ ',10,13DB ' / / ',10,13DB ' _/ _/ ',10,13DB '%',10,13DB ' ',10,13,'$' MUSA DB ' ',0AH,0DH DB ' Song: mary have gaoyang ',0AH,0DH DB ' ',0AH,0DH,'$'MUSB DB ' ',0AH,0DH DB ' Song: tai hu chuang ',0AH,0DH DB ' ',0AH,0DH,'$'MUSC DB ' ',0AH,0DH DB ' Song:liang zhi lao hu ',0AH,0DH DB ' ',0AH,0DH,'$'3主要的宏和过程的实现为将事先定义的数据段字符串显示在屏幕上,定一个参数为b的宏。将b的地址传到DX。随后调用DOS 09号功能调用。将字符串显示到屏幕。调用DISPLAY的实例为: DISPLAY INFO1 DISPLAY INFO2 DISPLAY INFO3 DISPLAY MUSLIST在此段代码中,程序显示提示作用的字符串和歌曲列表。DISPLAY宏具体实现如下:DISPLAY MACRO b LEA DX,b MOV AH,9 INT 21H ENDM歌曲包含节拍和频率。此处定义的音乐地址宏包含两个参数,将歌曲频率地址导入SI将歌曲节拍导入BP。当选择不同的歌曲时,主程序调用该宏,将用户要求的歌曲的频率和节拍导入,以便在MUSIC中实现发声。音乐地址宏实现如下:ADDRESS MACRO A,B LEA SI,A LEA BP,DS:B ENDM4源程序代码见附录四 程序的调试与运行结果说明1 程序的调试(1) 编辑源程序,假定源文件名为YINYUE.ASM。(2) 汇编源程序YINYUE.ASM。调用宏汇编程序MASM对源文件YINYUE.ASM进行汇编,生成目标文件YINYUE.OBJ。若汇编无错误,则进入第三步。(3) 用连接命令LINK连接目标程序文件YINYUE.OBJ。若连接成功,则进入下一步。(4)运行可执行文件YINYUE.EXE。2程序开始运行后,出现如图界面:按大写字母“A”,唱乐曲“玛丽有只小羔羊”;按大写字母“B”,唱乐曲“太湖船”;按大写字母“C”,唱乐曲“两只老虎”;按"Q"鍵,退出。五 课程设计总结1.设计中遇到的问题在此次课程设计的过程中,我遇到了很多的问题,主要有以下一些:(1)由于在此次课程设计的过程中我负责的部分为欢迎界面的制作,那么在制作的过程中如何制作图形界面的方式即为整个界面制作的灵魂。指导老师曾介绍过调用BIOS功能来画出线条,但在此次设计中我并没有采用传统的方法,而是定义了32000个空格来填充整个字符串界面。但在设计图形形状的过程中,经常会出现乱码的现象。(2) 在编程中时常出现逻辑错误。因为这个错误在编译中不会被发现,所以很难找出,要对程序一步一步的检查才行,可以用对子程序稍加修改后单独运行来查错。这体现我经历的程序不够多,需要在这方面加把劲。2.问题的解决方法此次课程设计中遇到了很多问题,在指导老师的帮助下,加上我们团队其他小组成员积极努力地讨论与查找资源,我的这些问题基本上得到完满的解决。如界面字符的乱码现象,我通过和组员讨论、网上查资料,最终解决了这个问题。3.设计后的感想和收获通过一学期的汇编语言的学习,我对汇编的认识有了更深理解,切实的提高了我的编程能力通过这次课程设计,我对学过的知识有了更深层次的运用,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用DEBUG指令。在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平总之,我认为我本次课程设计基本达到了要求,所编程序的功能也基本完善,而且程序有友好的交互界面和可扩充性,就是说可以在数据段中定义音乐的频率表和时间节拍表,然后在代码段中修改一下即可或者如果想演奏另一个乐曲,只需把mus_freq和mus_time两个表中的数据换成另一个乐曲的频率和节拍时间就可以了。当然本程序也存在一定不足,就是不能在运行程序后只要你输入任一首音乐的频率表和时间表确认后就可以演奏此音乐。附录源代码:DATA SEGMENT SPACE DB 32000 DUP (' ')INFO1 DB 0DH,0AH,'welcome to this programe!$' INFO2 DB 0DH,0AH,'there are some music!$' INFO3 DB 0DH,0AH,'please select which one to play:(A,B,C,Q)$' INFO4 DB 0DH,0AH,'input error!$' INFO5 DB 0DH,0AH,'please input again!$'BUF1 DB 0D,0AH,'Do you want to come back?(Y/N)$'STRING DB ' | ',10,13 DB ' | ',10,13 DB ' # ',10,13 DB ' # O _ # ',10,13 DB ' # /_. _| Piano | # ',10,13DB '# | |_| # ',10,13DB ' # # _ _| # # ',10,13DB ' * _ * ',10,13DB ' * A>mary have gaoyang * ',10,13DB ' * B>tai hu chuang * ',10,13DB ' * C> liang zhi lao hu * ',10,13DB ' * Q> exit * ',10,13DB ' * ',10,13DB ' O O ',10,13DB ' O | O O | O ',10,13DB ' _|/_ _|/_ ',10,13DB ' / / ',10,13DB ' _/ _/ ',10,13DB '%',10,13DB ' ',10,13,'$' MUSA DB ' ',0AH,0DH DB ' Song: mary have gaoyang ',0AH,0DH DB ' ',0AH,0DH,'$'MUSB DB ' ',0AH,0DH DB ' Song: tai hu chuang ',0AH,0DH DB ' ',0AH,0DH,'$'MUSC DB ' ',0AH,0DH DB ' Song:liang zhi lao hu ',0AH,0DH DB ' ',0AH,0DH,'$' ;* 音乐一玛丽有只小羊羔MUS_FREG1 DW 330,294,262,294,3 DUP (330) DW 3 DUP (294),330,392,392 DW 330,294,262,294,4 DUP (330) DW 294,294,330,294,262,-1MUS_TIME1 DW 6 DUP (25*8),50*8 DW 2 DUP (25*8,25*8,50*8) DW 12 DUP (25*8),100*8;* *音乐二 太湖船MUS_FREG2 DW 330,392,330,294,330,392,330,294,330 DW 330,392,330,294,262,294,330,392,294 DW 262,262,220,196,196,220,262,294,332,262,-1 MUS_TIME2 DW 3 DUP(50),25,25,50,25,25,100 DW 2 DUP(50,50,25,25),100 DW 3 DUP(50,25,25),100 ;*音乐三 两只老虎MUS_FREG3 DW 262,294,330,262 DW 262,294,330,262 DW 330,349,392 DW 330,349,392 DW 392,440,392,349,330,262 DW 392,440,392,349,330,262 DW 294,196,262 DW 294,196,262,-1 MUS_TIME3 DW 50,50,100,100,100 DW 100,100,50,50,100,100 DW 100,100,100,50,50,100 DW 100,100,100,100,100,50 DW 50,100,100,100,100,100 DATA ENDS STACK SEGMENT STACK DB 200 DUP (0)STACK ENDSCODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AH,0 MOV AL,08 INT 10H MOV AX,DATA MOV DS,AX MOV ES,AX MOV BP,OFFSET SPACE MOV DX,0000H MOV CX,32000D MOV BX,00A1H MOV AX,1300H INT 10H ;* 定义一个宏显示DISPLAY MACRO b LEA DX,b MOV AH,9 INT 21H ENDM ;*音乐地址宏 ADDRESS MACRO A,B LEA SI,A LEA BP,DS:B ENDM DISPLAY INFO1 DISPLAY INFO2 DISPLAY STRING DISPLAY INFO3INPUT: MOV AH,01H INT 21H CMP AL,'Q' JNZ A0 JMP RETU A0: CMP AL,'A' JNZ B0 CALL CLEAR DISPLAY MUSA ADDRESS MUS_FREG1,MUS_TIME1 CALL MUSIC JMP EXIT1 B0: CMP AL,'B' JNZ C0 CALL CLEAR DISPLAY MUSB ADDRESS MUS_FREG2,MUS_TIME2 CALL MUSIC JMP EXIT1 C0: CMP AL,'C' JNZ exit CALL CLEAR DISPLAY MUSC ADDRESS MUS_FREG3,MUS_TIME3 CALL MUSIC EXIT1: DISPLAY INFO5 JMP INPUT EXIT: call clear DISPLAY INFO4 DISPLAY INFO5 DISPLAY INFO1 DISPLAY INFO2 DISPLAY STRING DISPLAY INFO3 jmp input RETU: MOV AH,4CH INT 21H ;*发声 GENSOUND PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX

    注意事项

    本文(汇编语言课程设计论文.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开