汇编语言课程设计报告.docx

上传人:b****8 文档编号:9411836 上传时间:2023-05-18 格式:DOCX 页数:38 大小:133.55KB
下载 相关 举报
汇编语言课程设计报告.docx_第1页
第1页 / 共38页
汇编语言课程设计报告.docx_第2页
第2页 / 共38页
汇编语言课程设计报告.docx_第3页
第3页 / 共38页
汇编语言课程设计报告.docx_第4页
第4页 / 共38页
汇编语言课程设计报告.docx_第5页
第5页 / 共38页
汇编语言课程设计报告.docx_第6页
第6页 / 共38页
汇编语言课程设计报告.docx_第7页
第7页 / 共38页
汇编语言课程设计报告.docx_第8页
第8页 / 共38页
汇编语言课程设计报告.docx_第9页
第9页 / 共38页
汇编语言课程设计报告.docx_第10页
第10页 / 共38页
汇编语言课程设计报告.docx_第11页
第11页 / 共38页
汇编语言课程设计报告.docx_第12页
第12页 / 共38页
汇编语言课程设计报告.docx_第13页
第13页 / 共38页
汇编语言课程设计报告.docx_第14页
第14页 / 共38页
汇编语言课程设计报告.docx_第15页
第15页 / 共38页
汇编语言课程设计报告.docx_第16页
第16页 / 共38页
汇编语言课程设计报告.docx_第17页
第17页 / 共38页
汇编语言课程设计报告.docx_第18页
第18页 / 共38页
汇编语言课程设计报告.docx_第19页
第19页 / 共38页
汇编语言课程设计报告.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言课程设计报告.docx

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

汇编语言课程设计报告.docx

汇编语言课程设计报告

课程设计报告

课题名称:

学生成绩管理程序

学生姓名:

XX

学   号:

 XXX

专   业:

  计算机科学与技术

指导教师:

 XXX

时   间:

2010年6月12日至25日

目录

课程设计报告1

1、题目及要求2

1.3课题背景2

2、运行环境(软、硬件环境)3

3、功能设计(功能模块及模块图)3

3.1各模块的主要功能3

4、详细设计4

4.1程序功能4

4.2各模块的程序流程图5

7

4.3本设计的重点、难点及解决方法8

5、总结8

6、源程序9

 

1、题目及要求

1.1题目:

学生成绩管理程序

1.2要求

设计一个学生管理程序,要求实现以下功能

(1)各科成绩的录入、修改、和删除。

(2)按姓名查询每个学生哥们成绩。

(3)显示查询结果

(4)统计各分数段的成绩的人数个分数段的人数。

1.3课题背景

1.3.1汇编语言的优点

汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。

汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。

使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。

用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。

目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。

汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。

但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。

1.3.2课题意义

当今社会是一个信息时代的社会,计算机的使用也是越来越普遍了,各行业在管理职员都采用了一些管理软件,不管是银行、学校,大大小小的各种企业,都是使用的相应的管理软件管理企业的各种信息,我选择的这个汇编语言课程设计题就是一个简单学生信息管理程序,虽然只能处理一些简单操作,但是其意义却是非凡,同过此课程设计,让我了解了一些简单的管理软件的基本原理,更深刻的理解了汇编语言的特点,对汇编语言有了一个跟深层次的理解。

1.3.3主要研究内容和功能

利用汇编程序编写一个小型学生成绩管理程序,实现学生信息成绩的插入、修改、显示所有学生的各科成绩,并且可根据输入学生姓名插询该生的各科成绩,可统计所有成绩个各分数段的人数。

2、运行环境(软、硬件环境)

硬件:

8086以上CPU,内存256M以上。

软件:

WINDOWS操作系统,MASM,LINK汇编编译链接软件。

3、功能设计(功能模块及模块图)

3.1各模块的主要功能

3.1.1main主程序模块

用于对各种操作的调用,如插入、删除、显示所有学生的各科成绩等。

3.1.2Insert子程序插入模块

用于实现对新增学生的插入,插入至学生文本中,使用时需要调用get_rec子程序实现从键盘输入一个学生的信息。

3.1.3get_rec子程序模块

主要被Insert子程序调用,用于从键盘输入一个学生的信息

3.1.4query子程序模块

根据学生姓名查询学生的各科成绩,学生姓名由键盘输入,再从文件中一次比较找出要查询学生的信息。

3.1.5modify子程序模块

首先从键盘输入要修改的学生信息,在从学生文件中寻找要修改的学生姓名,并将要修改后的信息写入文件。

3.1.6delete子程序模块

由用户输入要修改学生的姓名,从学生文件中找出要删除的学生信息,将该学生的各项信息置为0,实现删除的操作。

3.1.7list子程序模块

用于显示学生文件中所有学生的各科成绩的信息,每次从文件读取一个学生的信息并显示。

3.1.8coun子程序模块

用于对学生各科成绩的各分数段的统计。

4、详细设计

4.1程序功能

程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生成绩,按m键,键输入需要修改的学生成绩,也包括不修改的科目;按d键输入要删除的学生姓名,将使其成绩全部变成0;按q键输入查询的学生的姓名,将其各科成绩显示出来;按下c键将按数学成绩分段结果。

以上功能单独运行可以实现,(即在进入菜单后选择其中一项功能运行可以成功运行,在关闭后选择另一项功能可以成功运行),但是在整体运行时得不到想要的结果。

所以如果输入有误,按退格键后将会出错,但是此程序没有处理错误的功能,因此再输入时要特别注意。

注:

此程序除了源程序外还需要一个学生文件,该程序命名为score.txt,该文件用于存放学生信息,在源程序中程序数据段中fname的值应与文件的存放位置一致。

4.2各模块的程序流程图

N

list流程图insert流程图

query流程图

Modify流程图

N

coun流程图

主程序流程图

4.3本设计的重点、难点及解决方法

4.3.1重点难点

开始拿到课题感觉很简单,主要是因为以前C语言曾经做过类似的题,思路大概差不多,但是实际下笔写的时候,遇到的最大的困难对于一些系统调用存在很大的问题,对DOS和BIOS的系统调用还比较模糊,在使用时DOS和BIOS中的系统功能调用不是很熟悉,所以需要先理解这些后,然后才正式开始写程序

开始写好了程序的主干,实现了主要功能,在写插入、查询等功能时遇到了一些问题,但通过仔细琢磨和请教老师、同学,最终还是成功解决,完成程序后,就开始了程序的编译,找错、改错、链接等,但是程序有些地方还是不是很完善。

4.3.2调试过程

1)编译源文件,命名为s.ASM。

2)采用命令格式。

MASMs.ASM将生成一个OBJ文件,检查源程序中的错误,并改正。

3)键入连接命令:

LINKcjgl.OBJ,回车,即可生成s.exe可执行文件。

4)执行s.exe选择其一功能,能正常执行,在关闭后,在进入运行别的功能。

5、总结

通过对这学生成绩管理的的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。

通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。

这不是第一次用汇编语言来设计一个小程序,平时做了很多实验,写了很多小程序。

但这次是一个综合的程序,平时的很多程序都用到了。

历时两周终于完成,其间有不少感触。

这次课程设计中有很多源程序的子程序的源代码可以从资料中或获得,但有很多都需要我们仔细琢磨才能明白其中的原理,同时程序中需要调用大量的BIOS和DOS系统功能调用,如显示字符串的功能调用、光标设置的功能的调用、清屏的功能调用等,这些问题如不查询资料就无法理解,因为上汇编语言基础时对这些DOS和BIOS的系统功能了解很少,所以我们需要查询DOS和BIOS功能的系统调用的基本信息。

还有在一些循环结构设计上也有许多不能理解的地方,都需要加以深刻的理解才能将问题顺利的解决,多整个程序的理解也有了更进一步的了解。

有时候遇到自己查资料和不能理解的地方时,自己不能解决时,先找同学讨论一下,会有意想不到的收获,有些问题就会迎刃而解,有时也会遇到比较顽固的问题,大家冥思苦想,也找不出一个令人满意的答案,但是通过询问老师,查阅更多的资料,问题也最终得到了解决。

当这些问题得到解决时,心情是一种豁然开朗、柳暗花明又一村的旷达。

这次课程设计的大部分程序,都可以在书上找到,这对我们的程序设计很有帮助,从这些资料中,我们可以看出这个学生管理程序的基本主干,修改某些地方就可以实现改程序的基本功能,不可否认,本程序仍然存在不少缺点和不足,但通过这次的课程设计找出了自己在学习上的不足,有些地方仍然还存在许多问题,但是我相信通过努力,在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!

6、源程序

datasegment

mess1db'studentgrademanagementsystem',0ah,0dh,'$'

mess2db'thisismainmenu',0ah,0dh,'$'

mess3db'insert(i)name:

',0ah,0dh,'$'

mess4db'modify(m)maths(a):

',0ah,0dh,'$'

mess5db'delete(d)English(b):

',0ah,0dh,'$'

mess6db'query(q)computer(c):

',0ah,0dh,'$'

mess7db'count(c)Chinese(d):

',0ah,0dh,'$

mess8db'exit(e)',0ah,0dh,'$'

mess9db'**********************************************************$'

mess10db'**********************************************************$'

mess11db'nameMaEnCoCh',0ah,0dh,'$'

mess13db'list(l)pleaseinput:

',0ah,0dh,'$'''

mess12db'maths<60<70<80<90<100',0ah,0dh,'$'

err1db'thereisnotthisstudent$'

err2db'fileclosewrong$'

fnamedb"e:

\masm5\score.txt"

buffer1db23dup(?

buffeerdb0ah,0dh,'$'

buffer2db30dup(?

buffer3db8dup('0')

countdb5

handledw?

deldb8dup('0')

xdb?

dataends

showmacroaddrs;显示字符串

leadx,addrs;取得字符串的入口地址

movah,9;调用dos系统功能的9号功能

int21h

endm

set_p1macroa;设置光标位置(将光标设置在指定行第36列处)

movah,2;调用BIOS系统功能2号功能

movdh,a

movdl,36

movbh,0;页号

int10h

endm

set_p2macro;设置光标位置(将光标位置设置在12行第2列处)

movah,2;调用BIOS系统功能

movdh,12

movdl,2

movbh,0

int10h

endm

set_p3macro;设置光标位置(将光标位置设置在第一行第30列处)

movah,2

movdh,1

movdl,30

movbh,0

int10h;调用BIOS系统功能号2号功能设置光标位置

endm

clearmacro;清除全屏

moval,0

movcl,0

movch,0左上角坐标

movdh,24

movdl,79

movbh,7右下角坐标

movah,6

int10h;调用BIOS功能6号功能清除全屏

endm

clear1macro;清除定义靠左边的部分屏幕

moval,0

movbh,7卷入行属性

movch,4

movcl,36

movdh,10调用BIOS系统功能清楚定义靠左边的屏幕

movdl,79

movah,6

int10h

endm

clear2macro;清除定义靠下边部分屏幕

moval,0

movbh,7卷入行属性

movch,12

movcl,0

movdh,24

movdl,79

movah,7

int10h;调用BIOS系统功能7号功能

endm

newlinemacro;输出换行符

pushax

pushdx

movdl,0dh

movah,2调用DOS系统功能2号功能显示单字符输出

int21h

movdl,0ah输出换行符(其ACSII值为oah,odh)

movah,2

int21h

popdx

popax

endm

show_itemmacroaddrs;定义显示学生信息的宏

localiloop,w10

pushbx

pushcx

movbx,0

iloop:

movdl,addrs[bx]

movah,2调用DOS系统功能的2号功能显示字符

int21h

incbx

cmpbx,15;判断是否显示了15个字符

jliloop

movcx,4

w10:

movdl,''

movah,2

int21h

movdl,''

movah,2;调用DOS系统功能的2号功能连续显示三个空格

int21h

movdl,''

movah,2

int21h

movdl,addrs[bx]

movah,2;调用DOS系统功能的2号功能显示一个字符

int21h

incbx

movdl,addrs[bx]

movah,2;调用DOS系统功能的2号功能显示一个字符

int21h

incbx

loopw10

newline

popcx

popbx

endm

getinmacroaddrs,count2;定义输入学生信息的宏

localzeroit,lp,input_end,exit

pushbx

pushax

movbx,0

zeroit:

movaddrs[bx],''

incbx

cmpbx,15

jlzeroit

movbx,0

lp:

movah,1;调用DOS系统功能从键盘输入字符al中并且显示字符

int21h

cmpal,0ah

jzinput_end

cmpal,0dh;判断字符是否为回车键

jzinput_end

movaddrs[bx],al

incbx

cmpbx,count2;判断是否输入够指定的字符个数

jllp

input_end:

cmpal,0dh

jzexit判断是否为空格

cmpal,0ah

jzexit

movah,7;调用DOS系统功能的7号功能从键盘输入字符不显示字符

int21h

jmpinput_end

exit:

popax

popbx

endm

codesegment

mainprocfar;主程序段

assumecs:

code,ds:

data,es:

data

start:

movax,data

movds,ax

movah,0;调用BIOS系统功能的0号功能设置显示方式

moval,3;以80×25的彩色方式显示

int10h

clear;清除全屏

showmess1

showmess2

newline

showmess13

showmess3

showmess4

showmess5显示主菜单界面

showmess6

showmess7

showmess8

showmess9

showmess10

set_p3;调用宏设置光标位置

w:

movah,7;调用DOS系统功能从键盘输入一个字符不显示

int21h

cmpal,'i'

jnzn1

callinsert;若输入字符为i则调用insert子程序段

jmpw

n1:

cmpal,'m'

jnzn2

callmodify

jmpw

n2:

cmpal,'d'

jnzn3

calldelete;若输入字符为d则调用delete子程序段

jmpw

n3:

cmpal,'q'

jnzn4

callquery

jmpw

n4:

cmpal,'c'

jnzn6

callcoun;若输入字符为c则调用coun子程序段

jmpw

n6:

cmpal,'l'

jnzn7

calllist

jmpw

n7:

cmpal,'e';输入字符为e则退出程序

jzexitf

jmpw

exitf:

movah,4ch;调用DOs系统功能的4Ch号功能输出结束码

int21h

ret

mainendp

insertprocnear;插入学生信息

pushax

pushbx

pushcx

pushdx

movdx,offsetfname;打开文件的路径的字符串入口地址给dx

moval,2

movah,3dh;调用DOS系统功能的3dh号功能打开文件

int21h

movbx,ax

clear1

set_p14

callget_rec

movcx,0;调用DOS系统功能的42h号功能将文件指针移动到文件末尾

movdx,0

moval,2

movah,42h

int21h

movcx,23;调用DOS系统功能的40h号功能写文件

movdx,offsetbuffer1

movah,40h

int21h

movah,3eh;调用DOS系统功能的3eh号功能关闭文件

int21h

set_p3

popdx

popcx

popbx

popax

ret

insertendp

get_recprocnear;从键盘输入获取学生信息段

pushax

pushbx

getinbuffer2,15;从键盘输入学生姓名

movbx,0

movcx,15

continue:

moval,buffer2[bx];

movbuffer1[bx],al;将从键盘输入的学生姓名写入buffer1中

incbx;

loopcontinue

set_p15;将光标设置在第五行36列处

getinbuffer2,2;从键盘输入学生的数学成绩

moval,buffer2

movbuffer1[bx],al;将从键盘输入的成绩写入buffer1中

incbx

moval,buffer2+1

movbuffer1[bx],al;将从键盘输入的成绩写入buffer1中

incbx

set_p16;将光标设置在第6行36列处

getinbuffer2,2;从键盘输入学生的英语成绩

moval,buffer2

movbuffer1[bx],al;将从键盘输入的成绩写入buffer1中

incbx

moval,buffer2+1

movbuffer1[bx],al;将从键盘输入的成绩写入buffer1中

incbx

set_p17;将光标设置在第7行36列处

getinbuffer2,2;从键盘输入学生的计算机成绩

moval,buffer2

movbuffer1[bx],al;将从键盘输入的成绩写入buffer1中

incbx

moval,buffer2+1

movbuffer1[bx],al;将从键盘输入的成绩写入buffer1中

incbx

set_p18;将光标设置在第8行36列处

getinbuffer2,2;从键盘输入学生的语文成绩

moval,buffer2

movbuffer1[bx],al;将从键盘输入的成绩写入buffer1中

incbx

moval,buffer2+1

movbuffer1[bx],al;将从键盘输入的成绩写入buffer1中

incbx

popbx

popax

ret

get_recendp

queryprocnear;根据学生姓名查询学生信息

pushax

pushbx保护个寄存器的值

pushcx

pushdx

clear1

clear2

movdx,offsetfname

moval,2

movah,3dh;调用DOS系统功能打开文件

int21h

movbx,ax

set_p2

getinbuffer1,15;从键盘输入学生姓名

b:

movah,3fh;调用DOS系统功能的3fh号功能读取一个学生(23个字节)的信息

movcx,23

movdx,offsetbuffer2

int21h

cmpax,0;判断文件是否读取完(ax=0则文件读取完毕)

jzs1;读取完毕则退出

leasi,buffer2

leadi,buffer1

movcx,15

c:

moval,byteptr[si]

cmpal,byteptr[di];判断输入的字符与文件中的姓名是否一致找出要查询的学生姓名

jnzb;不匹配则继续从文件读取

incsi;当前字符一致则继续比较下一个字符

incdi

loopc

mov[buffer2+23],'$'

leadx,mess11

movah,9;调用DOS的9号功能显示字符串

int21h

show_itembuffer2;显示查询到的学生信息

jmps2;显示学生信息后转至关闭文件处

s1:

set_p2

showerr1;显示错误信息(没有找到查询的学生)

s2:

movah,3eh;调用DOS系统功能的3eh号功能关闭文件

int21h

set_p3;设置光标位置

popdx

popcx

popbx恢复个寄存器的值

popax

ret

queryendp

modifyprocnear;修改学生信息

pushax

pushbx

pushcx保护各寄存器的值

pushdx

clear1

set_p14;将光标设置在第四行

movdx,offsetfname;将要打开文件的的路径的字符

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2