1、 汇编语言程序设计课程设计汇编语言程序设计课程设计 题目:学生成绩管理 2 一设计目的一设计目的 汇编语言课程设计是对所学课程内容全面、系统的总结、巩固和提高的一项课程实践活动。 根据汇编语言的特点,选择相应的题目,在老师的指导下,由学生独立完成。课程设计要求同学们 熟悉汇编语言的编程,BIOS 中断调用、系统功能调用、磁盘数据的查询、存取等相关知识。通过课 程设计,一方面提高运用汇编语言编程解决实际问题的能力,另一方面使同学们更深入的了解计算 机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。 二设计内容二设计内容 学生成绩管理 功能描述: 创建成绩管理档案文件(若已存在则直接使用
2、该文件),它包含学号 10 位,英语 3 位、高数 3 位、体育 3 位,语文 3 位、物理 3 位、及它们的平均成绩 3 位等七项内容。试编写一管理程序, 要求系统显示如下菜单,按键后执行相应的操作。 (1)L 命令:列出文件中的所有人的记录,每人一行 (2)I 命令:在文件末尾插入一个人的记录,但不允许学号重复 (3)D 命令:根据学号删除指定的纪录。 (4)O 命令:根据某课程进行排序,并将查询结果(学号、成绩)显示在屏幕上 (5)Q 命令:退出管理系统 三程序设计原理三程序设计原理 本次课程设计主要是在对文件进行操作的基础上,开辟存储空间保存文件的数据,在程序执行 过程中,通过对缓存区
3、进行添加、查询、删除、排序,并在最后将缓存区的数据保存到文件,从而 实现对文件的间接管理。具体步骤如下: 1.根据数据段存储的文件的 ASCIZ 串打开文件,未成功的话则新建文件; 2.显示界面,根据用户键入确定偏移值,进而找到数据段内存放的跳转指令; 2.1 编写 LIST 子程序:调用子程序 RD_WJ 读取文件数据,调用子程序 DISP 显示缓存区数据; 2.2 编写 RD_WJ:通过移动文件指针,每次读取一组,再移动指针,重复至读取完,保存记录 个数; 2.3 编写 DISP:通过指针的移动,先显示学号,再计算成绩的 ASC 值而后显示,通过记录个 数控制循环显示的行数; 2.4 编写
4、 INPUT:移动缓存区指针至空的一行,通过循环读取一组字符形成字符串,遇到空格 时形成学号,此时通过与另一个指向缓存区开头的指针进行比较,若学号重复则返回,不重复则同 样通过循环读取一组字符,然后减去 30H,保存为成绩,使用空格来分隔输入,遇到回车时结束输 入; 2.5 编写 DEL:通过记录的个数控制循环,匹配欲删除的学号串时,保存指针,并设另一个指 针指向欲删除的记录的后一个,通过从后面往前传送记录,达到删除目标记录的效果,最后记录数 减一; 2.6 编写 ORD:读取用户键入的选项 16,将其作为偏移量,即用 2 个指针指向相邻的 2 条记 录,用指针加偏移量来获取成绩并比较,交换时
5、通过将一行的长度作为循环的次数,循环 XCHG, 并在外部设置 2 个循环实现冒泡排序; 2.7 编写 WT_F:每次写入一行,将记录个数作为循环次数。 3 四程序流程图四程序流程图 4 五源程序五源程序 .MODEL SMALL .DATA N EQU 6 ;人数 NUM EQU 6 ;学号长度 LEN EQU NUM+6 ;一行的长度 DATBUF DB N DUP(LEN DUP(?) ;存储数据的缓存区 CNT EQU $-DATBUF FNAME DB c:stu.txt ;文件的 ASCIZ 串 RECNUM DB 15 DUP(?) ;要删除的学号 RECS DW ? ;有效记录
6、数 FCODE DW ? ;文件代号 CRLF DB 0AH,0DH,$ STR0 DB 0AH,0DH,L:LIST I:INSERT D:DELETE O:ORDER Q:QUIT,10,13 DB -,10,13,$ STR2 DB 0AH,0DH,-Input the Num and Score:,10,13,$ STR3 DB -The file is empty!-,10,13,$ STR4 DB 0AH,0DH,-Enter the Num:,10,13,$ STR5 DB -NOT FOUND!-,10,13,$ STR6 DB Enter Num and Score:,10,13,$ S