《微机原理课程设计:学籍管理系统》由会员分享,可在线阅读,更多相关《微机原理课程设计:学籍管理系统(29页珍藏版)》请在金锄头文库上搜索。
1、目录目录设计内容摘要设计内容摘要2设计任务和要求设计任务和要求2设计分工情况设计分工情况2软将编程说明软将编程说明2中断列表.2流程图及相应程序3程序运行结果程序运行结果10程序菜单.10浏览程序.10插入程序.10修改程序.11查询程序.11删除程序.14设计过程中出现的问题及解决方法设计过程中出现的问题及解决方法.15设计总结设计总结16程序清单程序清单17参考文献参考文献29学籍管理系统一、设计内容摘要随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存 储和管理数据,而转变成用户所需要的各种数据管理的方式。为了加深对数据管理及数据 库的理解,本设计基于汇编语言做了
2、一个微型学籍管理系统。二、设计任务和要求设计一个 10 左右学生成绩管理系统,完成六门课程考核成绩的录入、修改和删除操作, 具体功能如下 1、10 名学生六门课程考试成绩的录入、修改和删除; 2、按姓名查询每个学生各门课程的成绩; 3、显示查询结果;三、设计分工情况本设计采用主程序调用子程序结构,主程序完成菜单的显示与选择,子程序完成各个 独立功能。子程序成绩录入包括成绩录入子程序、删除子程序、浏览子程序、修改子程序。 马吉宁负责总体框架的设计及录入程序、浏览程序的编写,姚尧负责修改和删除程序的编 写。两人共同负责程序的调试和完善。具体思路及程序见流程图和程序清单。四、软件编程说明1、中断列表
3、 本程序大量使用了 DOS INT 21H 功能调用及 BIOS INT 10H 功能调用,在此将涉及到 的中断中能调用做简单说明。INT 21H 软中断是一个具有几十种功能的大型中断服务程序, 给这些子功能程序分别予以编号,成为功能号。每个功能程序完成一种特定的操作和处理。 应用 INT 21H 系统功能调用的方法如下: (1)入口参数送指定的寄存器或内存 (2)功能号送 AH 中。 (3)执行 INT 21H 软中断指令。AH功能输入参数输出参数07H键盘输入(无回显)无AL=输入字符09H显示字符串DX=串地址 “$”结束字符串3DH打开文件DX=带路径的文件名 AL=0 读 AL=1
4、写 AL=2 读/写CF=0 成功 CF=1 失败 AX=文件代号 AX=错误码10H关闭文件BX=文件地址CF=0 成功 AX=文件代号 AX=错误码INT 10H 的调用方法跟 INT 21H 的调用方法类似。 (1)置功能号于 AH 中 (2)置入口参数 (3)执行 INT 10H (4)分析出口参数及状态。AH功能输入参数输出参数00H设置显示器模式AL=显示器模式 00H 40*2516 色 02H 80*2516 色 等无02H设置光标位置BH=显示页码 DH=行 DL=列无2、流程图及相应程序 (1)主程序及其流程图 start: mov ax,data mov ds,axmov
5、 ax,stackmov ss,axmov ax,topmov sp,axmov ah,0 ;设置显示模式 mov al,3int 10hclear ;清屏show mess1 ;显示菜单show mess2show mess3show mess4show mess5show mess6show mess7show mess8show mess9show mess13show mess10 w: set_p3 ;设置光标位置mov ah,7 ;键入指令int 21hcmp al,i ;判断是否为“i”jnz n1 ;不是,继续判断call insert ;是,执行插入程序jmp w n1: c
6、mp al,m ;同理jnz n2call modifyjmp w n2: cmp al,djnz n3call deletejmp w n3: cmp al,qjnz n4call queryjmp w n4: cmp al,ljnz exitfcall listjmp w exitf: clear ;输入指令不对,程序退出mov ah,4chint 21h(2)插入子程序及其流程图 insert proc nearpush axpush bxpush cxpush dxmov dx , offset fname ;打开文件mov al , 2mov ah , 3dh int 21hmov
7、bx , ax ;保存句柄clear1 ;清空set_p1 2 ;将光标设置在call get_rec ;键入记录mov cx , 0 ;置指针到文件尾 mov dx , 0mov al , 2mov ah , 42hint 21hmov cx , 27 ;写入记录 mov dx , offset buffer1mov ah , 40h int 21hmov ah , 3eh ;关闭文件 int 21hset_p3 ;设置光标位置clear1 ;清空部分屏幕pop op cxpop bxpop axret insert endp(3)修改子程序及其流程图 modify proc near pu
8、sh axpush bxpush cxpush dxclear1set_p1 2mov dx , offset fname ;打开文件mov al , 2mov ah , 3dhint 21hmov bx , axmov handle , axcall get_rec ;键入记录 read: cmp ax,0 ;是否为文件 尾jz exit1mov dx,offset buffer2 ;读取一个记 录mov cx , 27 mov ah,3fh int 21hlea si , buffer2 lea di , buffer1mov cx , 15 c5: mov dl , byte ptrsi
9、 ;比较是否为所cmp dl ,byte ptrdi ;要修改记录jnz readinc siinc diloop c5mov bx , handlemov ah , 42h mov al , 1mov cx , 0ffffh :文件指针后退一个记录mov dx , -27int 21hmov cx , 27mov dx , offset buffer1 ;修改记录mov ah , 40h int 21hmov ah , 3ehint 21hjmp exit2 exit1: set_p2show err1 ;显示错误信息 exit2: set_p3 clear1pop op cxpop bxp
10、op axret modify endp(4)删除子程序及其流程图 delete proc nearpush axpush bxpush cxpush dxclear1 ;清空set_p1 2 ;设置光标位 置mov dx , offset fname ;打开文件mov al , 2mov ah , 3dh int 21hmov bx , axmov handle , axgetin buffer1 , 15 ;键入名字 read5: cmp ax , 0 ;是否为文件 尾jz exit5mov dx , offset buffer2 ;读取名字mov cx , 27mov ah , 3fh
11、int 21hlea si , buffer2lea di , buffer1mov cx , 15 c6: mov dl , byte ptrsi ;比较是否为要修改记录cmp dl , byte ptrdijnz read5inc siinc diloop c6mov bx , handlemov ah , 42h mov al , 1mov cx ,0ffffh ;文件指针后移mov dx , -12int 21hmov cx,12mov dx , offset del ;修改记录mov ah , 40h int 21hmov ah , 3eh int 21hjmp exit6 exit
12、5: set_p2show err1 ;错误信息 exit6: set_p3 pop op cxpop bxpop axret delete endp (5)查询子程序及其流程图query proc near push axpush bxpush cxpush dxclear1 ;清空clear2mov dx , offset fname ;打开文件mov al , 2mov ah , 3dh int 21hmov bx , axset_p2getin buffer1 , 15 ;键入名字 b: mov ah , 3fh mov cx , 27 mov dx , offset buffer2 int 21hcmp ax,0jz exitqlea si , buffer2lea di , buffer1mov cx , 15 c4: mov al , byte ptrsi ;是否为要 查cmp al