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

上传人:b****9 文档编号:54969 上传时间:2022-10-01 格式:DOCX 页数:23 大小:147.82KB
下载 相关 举报
汇编语言课程设计论文.docx_第1页
第1页 / 共23页
汇编语言课程设计论文.docx_第2页
第2页 / 共23页
汇编语言课程设计论文.docx_第3页
第3页 / 共23页
汇编语言课程设计论文.docx_第4页
第4页 / 共23页
汇编语言课程设计论文.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

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

《汇编语言课程设计论文.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计论文.docx(23页珍藏版)》请在冰豆网上搜索。

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

目 录

一.概述 3

二.总体方案设计 6

三.详细设计 9

四.程序的调试与运行结果说明 13

五.课程设计总结 14

附录 15

参考文献 24

—概述

汇编语言是计算机能够提供给用户使用的最快而有效的语言,也是能够利用计算机所有特性并能直接控制硬件的唯一语言。

借助于汇编程序,计算机本身可以自动地把汇编源程序翻译成用机器语言表示的目的程序,从而实现了程序设计工作的部分自动化。

1课程设计的目的

1.理解和掌握该课程中的有关基本概念,程序设计思想和方法。

2.培养综合运用所学知识独立完成课题的能力。

3.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。

4.掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

5.掌握利用单片机接口技术解决问题的基本方法

2课程设计的要求

1、需要的基本知识与技能。

具备汇编语言设计、编写、调试和运行程序的方法和技巧。

在PC机上运行汇编程序需要经过以下几个阶段:

编辑源程序。

利用文本编辑工具编辑源程序,生成一个汇编语言的纯文本文件。

文件的扩展名为.ASM

汇编源程序。

用汇编器汇编源程序生成目标代码文件,目标代码文件的扩展名是.OBJ,汇编器还可以生成列表文件和交叉参考文件。

汇编器相当于高级语言中的编译器。

汇编语言按照汇编语言的语法检查源程序,如果源程序语法有错误,汇编器就不生成目标代码文件,这时,必须重新编辑源程序,修改语法错误。

当发现源程序有的行含有不确定因素,汇编器会给出警告信,但按却省处理方法生成目标代码文件。

此时,可以重新编辑源程序,消去不确定因素。

连接目标程序。

利用连接器连接目标代码程序和库函数代码生成可执行程序文件。

一般单个模块的连接可以顺利地生成可执行程序文件。

当多个模块连接,或者库函数连接时,如果在目标代码中找不到所需的连接信息,连接器就会发生错误提示信息,而不是生成可执行文件。

这时,这就要重新编辑源程序,并汇编程序。

调试可执行程序。

程序的动态调试是在形成可执行文件后,针对可执行

2

程序进行的。

DEBUG是简单的动态调试工具,利用调试工具动态的调试程序,找出程序中的问题,那么就要重新编辑,汇编源程序。

2、尚未掌握的知识点。

有时在程序中定义了较多的宏,或者可以把自己编译中常用的宏定义建立一个独立的文件,这个只包含若干定义宏文件的文件可称为宏库,通常用扩展名MAC或INC来表示。

当应用程序中需要用到宏库中的宏定义时,只需要用语句说明。

有时汇编语言程序需要连续重复地完成相同或者几乎完全相同的一组代码,这时,可使用重复汇编。

汇编程序把重复模块代码重复几次,每次重复把重复块中的哑元用自变量表中的一项取代,下一次取代一次,重复次数由自变量表中的自变量个数来确定。

条件汇编中,汇编程序能够根据条件把一段源程序或者把它排去在外,这里用到条件伪操作。

条件伪操作可以用在宏定义体内,也可以用在宏定义体外,并且可以嵌套任意次。

模块化程序设计方法是按照各部分程序所实现的不同功能把程序划分成为多个模板。

各个模板在明确各自的功能和相互间的约定后,就可以编制和调试程序,最后把它们连接起来形成一个大程序,子程序结构是模块化程序设计的基础。

子程序相当于高级语言中的过程和函数。

在一个程序的不同部分,往往就要用到类似的程序段,这写程序段的功能个结构形式都相同,只是有的变量赋值不同,此时就可以把这些程序写成子程序形式,以便需要时调拥它。

计算机中有一个可编程时间间隔定时器8253/54,它能根据程序提供的计数值和工作模式,产生各种计数/定时脉冲,提供给系统的各个部分使用。

先要设定控制字,以选择计数器,确定工作模式和计数的值。

每个计数器由

3个外引腿与外部联系,在对任一个计数妻编程时,首先将控制字节写入控制寄存器。

控制字的作用是告诉8253/54选择那一个计数器工作,要求输入什么样的脉冲波形。

另外对其初始化工作好包括,向选定计数器送一个初值。

PC机上的大多数I/O都是主板的8255的可编程外围接口芯便管理的,PPI包括三个8位寄存器,两个用于输入功能,一个用于输出功能。

利用CPU产生延迟时间是最常用的方法,但是对于不同的计算机,它们产生的延迟时间都是不一样的。

组成乐曲的每个音符的频率和持续时间是乐曲程序发声所需要的两个数据。

音符的持续时间是根据乐曲的速度及每个音符的节拍来确定的。

在4/4中,四分音符为一拍,每小节四拍,全音符持续四拍,四分音符持续一拍,八分音符持续半拍等。

3

3、教师对本题目所提出的要求等。

(1)重视实验方案设计

(2)认真作好实验准备

(3)仔细观测实验现象,如实记录实验数据

(4)分析故障原因,精心排除故障

4

主程序流程图:

二总体方案设计

开始

输入字符

Y 判断 N

是否

Y N

结束 判断是

否为A

调用宏

ADDRESS



Y 判断是 N

否为B

Music子程序



调用宏

ADDRES



Y N

判断是

否为C

Music子程序



调用宏

ADDRESS

Music子程序



Clear子程序

图1 主程序流程图

5

Music子程序流程图:

开始

DI=-1

返回DOS界面并重新输入字符

结束

GENSOUND

子程序

取下一频率值和下一时间值

图2Music子程序流程图

这次课程设计的设计思想是在熟练掌握汇编程序的设计方法的基础上,利用通用发生程序编写音乐程序.组成音乐的每个音符的频率值和持续时间是音乐程序发声所需要的两个数据,根据音调与频率和时间之间的关系,把要编辑的音乐的每个音符的频率和持续时间定义成两个数据表,进而把它们写入通用发声程序,音乐程序就完成。

在编制此音乐演奏程序时,应该知道ROMBIOS中有个BEEP子程序,这能根据BL中组出的时间计数值控制8254定时器,产生持续时间为1个或几个0.5秒,频率为896HZ的声音,我们可以利用并修改BEEP,使其产生任一频率的声音。

首先要了解计算机是如何产生声音和乐曲的。

找出相关程序源代码,弄清楚各功能的环节间的联系、联接方法,搞清楚单调与频率和时间的关系,利用计算机控制发声的原理,依照基本的算法思想写程序,测试,更正,扩充功能,修饰细节。

本次设计在具体设计过程中的整体设计思路如下:

该程序主要分成

1.根据音阶表和简谱为演奏的乐曲定义一个频率表mus_freq和一个时间表

mus_time。

2.分别将两个表的偏移地址放入SI和BP。

6

leasi,mus_freqleabp,ds:

mus_time

3.从表中取出音符的频率放入DI,取出音符的持续时间(实际上是10ms

的倍数)放入BX。

movdi,[si]movbx,ds:

[bp]

频率表中最后一个数据-1作为乐曲的结束符,也可用其他的特殊值来代替。

4.调用通用发声子程序SOUNDF发出音调。

这个程序比较简单,如果想演奏另一个乐曲,只需把mus_freq和mus_time两个表中的数据换成另一个乐曲的频率和节拍时间就可以了。

该算法的整体思路是在这个设计中用到了BEEP通用发声程序,我们利用对BEEP程序的修改让它产生任何一种频率的声音,也可以让声音的持续时间更容易被调整在编译的过程中,用到了子程序调用,分别根据输入调用music1,music2,music3程序还要调用子程序gensound发出音调,主要特点是程序简单明了,有良好的交互界面。

程序的主要功能是给用户提供三首已经写好的短曲,根据用户的选择演奏乐曲,演奏完一首乐曲后跳回起始状态,如此循环,直到用户输入结束的信息为止。

本程序设计过程的整体设计思路是通过定义数据段,堆栈段和代码段实现程序的各种要求。

其中堆栈段是为乐曲的音调及频率的数据分配空间;数据段是记录程序运行过程中所需的信息,包括字符信息,单调数据,音频数据;代码段则是程序算法部分,通过对各数据的调用,实现音乐演奏功能。

我所承担的部分设计工作是做出该程序的设计的欢迎界面并阅读程序源代码,弄清楚各功能的环节间的联系、联接方法,搞清楚单调与频率和时间的关系。

依照基本的算法思想写程序,测试,给源代码润色。

5.系统的主要功能

给用户提供三首已经写好的短曲,根据用户的选择演奏乐曲,演奏完一首乐曲后跳回起始状态,如此循环,直到用户输入结束的信息为止。

7

三详细设计

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秒。

知道了音调及频率、时间的关系后,可以按照乐曲的乐谱将每个音符的频率和持续时间定义为两个数据表,然后编写程序依次取出表中的频率值和时间值。

“玛丽有只小羊羔”的乐谱如下:

3212|333—|222—|355—|3212|3333|223

2|1——|

可设置该乐曲的频率表如下:

MUS1_FDW330,294,262,294,3DUP(330)DW3DUP(294),330,392,392

DW330 ,294,262,294,4DUP(330)DW294,294,330,294,262,-l

设置该乐曲的节拍时间表如下:

一般延迟时间取10ms的倍数。

MUSl—TDW6DUP(25*8),50*8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1