文参考文献哪里找厦门

更新时间:2024-01-08 作者:用户投稿原创标记本站原创 点赞:7481 浏览:30475

课程设计(论文)任务书

软件学院软件工程专业7班

一,课程设计(论文)题目设置模拟

二,课程设计(论文)工作自2007年1月2日至2007年1月7日.

三,课程设计(论文)地点:软件学院机房

四,课程设计(论文)内容要求:

1.本课程设计的目的

1)使学生增进对汇编语言的认识,加强用汇编语言编程的能力.

2)使学生掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各

种中断调用功能,并由此实现对硬件的控制等.

3)使学生了解和掌握汇编语言程序设计过程,方法及实现,为以后微机

原理课程的学习打下良好基础.

2.课程设计的任务及要求

□题目一:设置模拟

要求:进行的设置(第一次),修改已设置的,输入的不显示,

的查看与校验,有良好的操作界面与提示.

□题目二:计算器

要求:从键盘输入数据与运算符,可以进行加,减,乘,除四则运算,

计算结果以十进制数显示,有良好的操作界面与提示.

□题目三:吃豆子程序

要求:在屏幕上显示多行"豆子"(字符".")和一个"嘴巴"(字符"C"),

单击空格或者方向键开始吃豆子(可逐行进行,也可用键盘控制),

有良好的操作界面与提示.

□题目四:星期判断程序

要求:输入1900年1月1日~2100年12月31日之间任何一天的日期,

判断该天的星期数并进行输出,有良好的操作界面与提示.

□题目五:KMP模式匹配算法

要求:定义定长的源串,从键盘输入进行匹配的模式串,

按照KMP算法的思想进行匹配并输出匹配结果,

输出每一步匹配的字符位置,有良好的操作界面与提示.

3)课程设计论文编写要求

1)详细清晰地描述个人的课程设计工作,

2)要按照本模板的规格打印誊写设计论文,

3)论文包括目录,内容提要,正文,课程设计体会,参考文献,附录等,

4)毕业论文装订按学校的统一要求完成

4)评分标准:

1)完成原理分析:20分,

2)完成设计过程:40分,

3)完成代码分析:20分.

4)个人创新工作:20分.

学生签名:

2007年1月7日

课程设计(论文)评审意见

(1)原理分析(20分):优(),良(),中(),一般(),差(),

(2)设计分析(20分):优(),良(),中(),一般(),差(),


(3)程序流程(20分):优(),良(),中(),一般(),差(),

(4)代码分析(20分):优(),良(),中(),一般(),差(),

(5)个人创新(20分):优(),良(),中(),一般(),差(),

(6)格式规范性及考勤是否降等级:是(),否()

评阅人:职称:

年月日

目录

目录-1-

正文-1-

一,题目分析-1-

二,个人工作-2-

三,流程图-4-

四,源程序-6-

五,程序结果-12-

课程设计体会-16-

正文

一,题目分析

1,题目选择

从拿到题目到选择题目,我对课程设计的每一道题目进行了分析:计算器程序解决的是四则运算的问题,并要用十进制输出,需要用到很多的数据变量,也就要用到很多的寄存器,由于我这方面基础不够好,时间上又不允许我既可去补充,只能放弃,吃豆子程序是我比较喜欢的一个程序,理论上思路很清晰,用字符C(即嘴)逐一代替字符".",达到吃"豆子"的目的,我在字符串的输出上极为笨拙,所以我没有把握能把开始的界面就做好,更没有充分的信心能做出良好的操作界面,亦忍痛割爱,对于星期的判断程序,是一个比较多的循环程序,循环过程庞大,以至于我怕自己对自己失望,从此失去信心,就没有选,而KMP模式匹配算法,我对算法本身的了解就不够清晰,更是没有足够的把握做好它了.

题目的选择上,我首先了解了自身优势与缺陷,然后经过认真地思考与比较,针对我自身对串指令操作相对了解较多,分支程序较熟悉,循环程序设计掌握较弱的特点,选择了设置程序.这样的选择对我而言既是扬长避短,又是给了我自己一个挑战:我对常用的输入/输出系统功能调用不甚了解,而该程序中有需要较多的输入与输出功能的调用.

2,题目要求

题目一:设置模拟

要求:进行的设置(第一次),修改已设置的,输入的不显示,的查看与校验,有良好的操作界面与提示.

3,题目分析

该设置程序的实现主要要实现以下几个功能:

(1),良好的欢迎,以及各个操作界面,

(2),输入的实现,定义字符串,保存,

(3),选择对是否进行操作,进行何种操作:察看,修改等.采用分支程序设计原理,设置转移条件,

(4),选择察看,要输出察看危险提示.用户确认了解情况后再输出所保存,

(5),选择修改,则先要输入原,确认输入的与原来存储的相同,才能修改,

(6),输入确认不正确,则退出程序,

(7),修改,保存.

在实现上述的功能时,我采用串的操作,将和要确认的分别保存在以ARY1和ARY2为首址的字节存储区中,进行比较与操作.

4,功能完善

在本程序的基础之上,作稍许改动或加上一些子程序即可使其功能更加完善或者增加其他功能,如:

1,加一个输入原错误时转向继续输入,并且三次输入错误时退出,

2,加入一个循环次数限定程序,限定修改的次数,

3,进一步完善欢迎以及各个提示界面,

等等.

由于时间和个人知识掌握情况限制,本程序未能完成上述功能,我一定会进一步提高自己的能力和水平,然后进一步的改进和完善此程序,使其功能更加完善,操作界面更加优美.

二,个人工作

确定题目后,我确定了基本的程序思路,此时的思路尚极为幼稚,简单,主要为的保存以及修改功能的相关流程.开始着手编写,根据一个学期以来积累的汇编语言知识以及参考书上的实例程序,我写出了一个基本的程序框架,能够实现的输入,保存和修改的功能.

其中,输入,输出使用常用的DOS系统功能调用中的1号,8号,9号以及10号调用来实现的.初始化时,输入同时输出*,是分别用控制台输入和显示输出来实现的,将保存在以ARY1为首址的字节存储区中,确认修改,将输入的确认存储在以ARY2为首址的字迹存储区内,比较ARY1与ARY2,确认输出正确,转回输入,进行修改.

程序中存在着非常多的问题,尤其第一次出来的程序,找不到出口,,一旦进入,并没有退出操作,也无法从程序中退出来.经过调试和修改,我改变了入口方式,循环条件,使得程序在任意时刻可以退出程序.

在进一步的修改程序过程中,鉴于有许多人会忘记而不知所措的情况,我又在程序中增加了查看的功能,查看只需要一个9号调用显示字符串即可以实现,但这样一来,在相关的操作中,不再是"是否修改"了,而是"1,查看2,修改"的分支程序了,重新建立转移条件.然而又存在了另外一个问题,现实生活中,是极为重要的数据,随意的查看十分容易使被泄露出去,所以我又在察看之前增加了一个提示:"察看操作容易被泄露,请谨慎操作".只是一个显示字符串的语句,没有增加问题的复杂度,希望能够体现一种人文关怀,一种为他人着想的敏锐,细致.

经过一步步的努力,程序日趋完善,我的心也一步步成熟起来,了解了更多的知识,在实践中学会到了更多的东西,但是,我做的程序并不好,在做课程设计的过程中还有许多需要改进的地方:

1,在做课程设计的过程中,有许多恪守成规的地方,比如说,*代替输出,但是在定义中可以改变,进行变通.

2,本人对汇编语言不完全熟悉,这对我做课程设计有很大难度.我只能边学边用,在调试时非常费劲,常常是看着别人就是这么作的,但在自己的机子上就是实现不了,所以调试时花了很多时间而又常常无工而返.

3,设计中遇到的问题及解决方法:

问题1:调试程序时,调试正常,无错误,但不能显示.

解决方法:经检查是显示字符串语句MOVAH9,被错误输入为MOVAH2,改正后即解决了此问题.

问题2:在调试修改程序的时候,在修改时,输入原正确后没有任何反应.

解决方法:经过调试,发现主要是语句应用错误,将语句改正过来即解决了问题.

问题3:对某些汇编指令的含义掌握的不够明确.

解决方法:仔细看书,牢固掌握各个指令的功能及意义.

三,流程图

主程序流程图

子程序流程图:修改程序

四,源程序

1,定义模块:

STACKSEGMENTSTACK

DB200DUP(0)

STACKENDS

DATASEGMENT

HEAD0DB0AH,0DH,'***************************************************$'

HEAD1DB0AH,0DH,'%^@^^@^^@^^@^^@^^@^^@^^@^^@^%$'

HEAD2DB0AH,0DH,'%%$'

HEAD3DB0AH,0DH,'%Weletomycipherprograme!%$'

HEAD4DB0AH,0DH,'%(Pleasepressentertocontinue,%$'

HEAD5DB0AH,0DH,'%orperssanytoexit:)%$'

HEAD6DB0AH,0DH,'%***Zhangye***%$'

HEAD7DB0AH,0DH,'%Class7grade2insoftwareschool%$'

HEAD8DB0AH,0DH,'%----------20052110010702----------%$'

HEAD9DB0AH,0DH,'###################################################$'

M1DB0AH,0DH,'*PleaseChoosethenum:*$'

M2DB0AH,0DH,'*1,SeetheCipher*$'

M3DB0AH,0DH,'*2,ChangetheCipher*$'

M4DB0AH,0DH,'**$'

ADB0AH,0DH,'PleasePressYourCipher(6):$'

BDB0AH,0DH,'YourCipheris:$'

CDB0AH,0DH,'PleaseInputYUANCipher:$'

DDB0AH,0DH,'PleaseInputYourNewCipher:$'

EDB0AH,0DH,'ItisDangerouoryoutoSeetheCipher(PressEnter)!$'

FDB'*$'

ARY1DB0AH,0DH,10DUP()

ARY2DB0AH,0DH,10DUP()

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK

2,欢迎界面,进入输入,储存:

MOVAX,DATA

MOVDS,AX

LEADX,head0

MOVAH,9

INT21H

LEADX,head1

MOVAH,9

INT21H

LEADX,head2

MOVAH,9

INT21H

LEADX,head3

MOVAH,9

INT21H

LEADX,head2

MOVAH,9

INT21H

LEADX,head4

MOVAH,9

INT21H

LEADX,head5

MOVAH,9

INT21H

LEADX,head2

MOVAH,9

INT21H

LEADX,head6

MOVAH,9

INT21H

LEADX,head7

MOVAH,9

INT21H

LEADX,head8

MOVAH,9

INT21H

LEADX,head2

MOVAH,9

INT21H

LEADX,head9

MOVAH,9

INT21H,欢迎界面

MOVAH,1

INT21H

CMPAL,0DH

JZBEGIN

JMPEXIT,比较输入是否为enter键,是,继续,不是,退出

3,输入,输出*,保存(SI,DI分别为ARY1和ARY2的指针计数器)

BEGIN:MOVAX,DATA

MOVDS,AX

LEADX,A

MOVAH,9H

INT21H,输出提示语

MOVSI,1

MOVDI,1,将计数器初始化为1

LOOP1:MOVAH,8

INT21H

MOV[ARY1+SI-1],AL

INCSI,输入一位

LEADX,F

MOVAH,9H

INT21H,输出一个*

CMPSI,6

JLELOOP1,比较是否够6位,

不够,返回LOOP1

4,输出操作选择菜单,选择对所要进行的操作:

L4:LEADX,head0

MOVAH,9

INT21H

LEADX,m4

MOVAH,9

INT21H

LEADX,m1

MOVAH,9

INT21H

LEADX,m4

MOVAH,9

INT21H

LEADX,m2

MOVAH,9

INT21H

LEADX,m3

MOVAH,9

INT21H

LEADX,m4

MOVAH,9

INT21H

LEADX,head0

MOVAH,9

INT21H,输出选择菜单

MOVAH,1

INT21H

CMPAL,'1'

JEL5,输入1,进入察看

CMPAL,'2'

JELOOP2

JMPEXIT,输入2,进入修改

5,输出察看程序

L5:LEADX,E

MOVAH,9H

INT21H,输出警告

MOVAH,1

INT21H

CMPAL,0DH

JEL6,按enter键,确认了解警告内容

L6:LEADX,B

MOVAH,9H

INT21H

LEADX,ARY1

MOVAH,9H

INT21H,输出

JMPL4,返回菜单

6,修改程序

L2:LEADX,C

MOVAH,9H

INT21H

L6:MOVAH,8

INT21H

MOV[ARY2+DI-1],AL

INCDI

LEADX,F

MOVAH,9H

INT21H

CMPDI,6

JLEL6,输入原

MOVDI,1

L3:MOVAL,[ARY1+DI-1]

CMPAL,[ARY2+DI-1]

JNEEXIT

INCDI

CMPDI,6

JLEL3

LEADX,D

MOVAH,9H

INT21H

MOVSI,1

CMPDI,6

JGLOOP1,判断输入的与原是否一致,一致,返回LOOP1,即修改,不一致,则退出程序

EXIT:MOVAH,4CH

INT21H

CODEENDS

ENDSTART

五,程序结果

1,调用宏汇编程序MA对源文件zhye.a进行汇编,连接:

(图一)

2,运行程序,出现欢迎界面:

(图二)

一,按enter键进入程序(图三),按任意键退出程序(图四),

二,输入6位,输出6位*(图五),

三,输出菜单选择:1,查看,2,修改(图六),

(图三)

(图四)

(图五)

(图六)

按1键进入察看,

(1),输出警告(图七),

(图七)

(2),按enter键确认,输出(图八),

(图八)

2,按2键进入修改,

(1),输出"请输入原"(图九),

(图九)

(2),确认是否与保存原相同,相同,修改(图十),不同,则退出程序(图十一),

(图十)

(图十一)

3,按其他键退出系统(图十二)

(图十二)

课程设计体会

在这次课程设计中,我进一步了解了编程汇编程序的整个流程,熟悉了编程思路.使我对汇编语言这门课有了深刻理解,也了解了汇编程序的过程,对相关硬件与软件的衔接有了更多的理论基础与感性认识.从中让我认识到了自己的不足,也让我学到了很多,为我将来的学习打下了基础.

在编程过程中,我遇到了很多的挑战,同时也解决了许多问题.例如,虽然经过了一个学期《汇编语言》的学习,有一定的汇编知识,但十分缺乏汇编的编程经验.从白手起家,经过一番苦苦挣扎后,使我对汇编语言有了一定的了解,不仅熟悉了基本的编程思路,而且对后面没有学习的课程也略知一二.深深地体会到了编程的魅力与乐趣,在相关的课程练习中选用汇编语言进行编程实现.总的说来,编谢程序的前前后后思路是都比较清晰的,我还打算在寒检测对这个程序进行延伸与扩展,使其更加完善,也让自己对汇编语言进一步的了解与掌握.

理论知识用于指导实践,亲身体验才能领悟汇编语言的各种问题.慢慢尝试着经历各种过程.运用工程学的思想编写程序,从宏观上把握软件的生命周期,强调整体性与协调性,不能任意妄为.编写程序必须严谨求实,脉络清晰.

通过课程设计,我体会良多.首先,我对程序编写的流程有了比较深刻的理解,从题目分析开始到测试结束,我都严格按照编程的思想一步步来做的,虽然中间出现了不少的错误,但对我来说这也是很宝贵的经验.其中,我觉得在题目分析方面,有些地方还做得不够到位,导致测试中出现了与题目不符的情况,这使我认识到,一个全面细致的分析是很重要的.其次,是对学习能力有了更深刻的理解:学习能力体现在能尽快接受新的知识,学以致用.实际的工作需要很多以前书本里没有的东西,这就需要快速的学习和运用.这时候没有了老师,需要自己摸索研究,对自学能力有了更高的要求.还要树立终身学习的理念,不断的充实完善自己,努力跟上时代的脚步.摸索有效的学习方式.充分利用网络资源是学习的重要手段.

由于时间较短,所以该程序还有许多不尽如人意的地方,可以说只是一个原型,有很多方面都未加以考虑,比如用户界面不够美观,程序结构简单,不能很好的进行实现所需要的功能,这些都有待进一步改善.在本次课程设计中,我从老师和周围同学身上学到了很多东西.王老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅,周围的同学们也无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高.我想这对我今后不论在工作上还是在学习上都会大有裨益.

-2-

-3-

1

[ARY1+DI-1](AL

输入原

修改子程序

修改成功

修改,输入6位,输出6位*

AL([ARY1+SI-1]

结束

CMPDI,6

JLE

AL([ARY2+DI-1]

INCDI

确认修改

开始

N

JE

输出欢迎界面

和设定提示

N

输入6位,输出6位*

输入字符串(ARY1区

选择1,查看

2,修改

CMPDI,6

N

N

确认是否察看

CMPAL,'1'

结束

LEADX,ARY1

MOVAH,10

INT21H

结束

逐一比较每一位输入与原是否相同

CMPAL,[ARY2+DI-1]

INCDI

JLE

JNE

2