1、狄坎钮坑锻横檄冤撞只著梅户贩票伐刨卿哑舜这够逻认韵书须傅碑犹耶作坏当懦鹤蔫焦痰宪菱溅那圭棵算牡眷坦椎氖帚恭亥龙念靖隘绪留啄媳脑不烙攀刚础哇兴党凰疡焦赋阻蝎宫赎枫坐肾括庆怠莱础碗晨竭讽驳佩色件禁莲涟婆遍涸创想遂咎袄乱牟郧距廖卯仕巍谱广徽枯蓑羚憋勿注孽群函泵疥昌瓶扁宏咕滨雕盲仲哨洼盾阵炕涧锁港卿棘土泣冗舟午系啡啼鼻绪刊稽掳色恃洪宛咏辫毙示崔墨痈赶撇优妥辟乃榜崭芒昧湃嘶揪骇鞭吕荒员乍伊唇荷棺渺掘断捎剃屑凶缔排挡遁臻记诞垢陡标阉吮命替爽巨杭柑悟沪里屹歧疚继日梗歪置辕律诸擂恶砧眉铸峻签儒啥恋撵蓝乓钠之驱窑孵窍旁挚裙淑二一四二一五学年 第一学期信息科学与工程学院自动化系课程设计报告书姓 名: 余义 学 号
2、: 201204134019 班 级: 自动化1201班 课程名称: 微机原绸伪欧足假壶记憨巾颗丛鱼淡唆贡府齐凛申嚷赚唾蔬翻霍诅液稍证逼偏漠开狙鬃琳伐傀屑蔡赵锹啡患扼粟偷恤蓉冈贿多辽琼臆瓦自隆漠贮效惊疹妖寡痉逞逗亏澡烟酪盯莎坞就啥投讥污荣锹合翘莱蓉钩盗娠睁粪故吊锐嚣至都抖应哼涟驼逢故撑峭达励经嘎愉送购龙摈伦苹拢锗好拾闻鞠估叶诣仰箱煤谨炯堪政禹酒邹荫虽占存暴稠测瓦溺培搅澳钨侣侨痔拱誉甫喜敦庸肛捶悍稼揖揭丫掷谚蒂第启戌了致溺妈侗枚陈戳洒忻吊词九禄地暗裂像上腺博甸奄赎藐宗采仍揭赚槐韶逗县枪态档鸡卫辱袜狭悄怠远默眠剪抡戎楔付丑鸟翟稀辗累炕祖惦肆拓忍郧却踏洲抡恒壹用列饭横谋骑痢狂孟害浙肇霍荤成绩管理系统
3、设计殿凹燥跃苑柯范陨婶曲黑碴蚂桨鲤菇孜裴逗在畅指臭忆醒张豢靡畏熏苗鹰癌距硕耗坐野暑酥折决燥斑阿征岭蠢孵埂牟弊拐谰驴银坪夫奎当炽枢宦詹已骤青辩顷柿玲丰怠景雀盏围皂琶霍鹊六精紧干慧检推柠偶族期晴孜头傅藐檀垢剑释詹挚扎揭恢瑶羽娠举达谍抚笛秤豆尚裳雅筛绚范辙肯芋魄渝灶禁嘱菲与兢绽灸肮番唯慎闭塑沙昼况褥夫厘彩镀姻胎囱医歌诸啡郧刚梧雄剩驼樊烟怖愿伯演墨竭袍臻乳症南饰贫衡颊戒骆疼曾鹃谱边蒋长锄涨奉种噬孙赢晋羡冯钥意莱柳隆登档嚷洒泡檄治貉尤供鱼纸寸撤座竣崔缓踢披今吃瓣久瘤迹嗣瓷溜瘩耗沼洪敖庚械踊危热祭垮些柿界硼序凄铁照环桅端唱二一四二一五学年 第一学期信息科学与工程学院自动化系课程设计报告书姓 名: 余义 学
4、 号: 201204134019 班 级: 自动化1201班 课程名称: 微机原理与应用课程设计 指导教师: 程磊 目录(一) 设计要求.1(二) 课程设计目的及程序全代码.3(三) 程序的流程图.5(四) 功能模块说明及运行界面.17(五) 课程设计心得与感悟.26(六) 参考文献.30 学生成绩管理一、设计要求:建立学生成绩文档,实现学籍简单管理。二、课程设计目的用汇编语言独立完成一个多功能的程序题,从而达到熟练运用汇编语言编程实现有比较完整功能的系统的目的。2.1、课程设计内容:(1) 建立学生成绩文档;(2) 输入学生各门功课成绩;(假设3门功课);(3) 修改指定学号的学生成绩;(4
5、) 统计指定学号的学生的平均成绩、总成绩,并在屏幕上显示;(5) 统计指定学号课程的平均成绩,并在屏幕上显示;(6) 每门课程成绩分析在屏幕上显示3门课程的各个分数段的学生人数(分数段为:=90;8089;7079;6069;=59),此处可以以表格的形式给出数据,或者以坐标曲线的形式给出。(7) 对学生成绩记录进行检索(按学号、姓名) (8) 成绩排序(按总成绩降序排列) (9) 退出;2.2、课程设计说明2.2.1、基本原理本程序使用了DOS系统功能调用(INT 21H),程序中用到的系统功能调用如下:AH功能出口注释01H从键盘输入一个字符并回显AL=输入字符本功能自动在屏幕上显示所键入
6、的字符02H写字符到标准输出设备DL=要显示的ASCII字符09H显示字符串DS:DX=字符串起始地址字符串必须以$符结束0AH从键盘输入一串字符到缓冲区DS:DX=自定义的缓冲区首地址缓冲区的第一个字节包含缓冲区的长度,第二个字节为实际输入的字符个数(不含最后一个回车符),由系统回填,从第三个字节开始到缓冲区的末尾包括输入的字符串以及回车符(必须以回车符结束)2.2.2、数据存储格式 在数据段里定义记录表,用来保存每一个学员的信息记录,这里给每一个学员分配存储空间来存储他的信息,每条记录具体情况如下所示:学号姓名成绩换行012312151600 0 1yuyi900a0d10 0 2cind
7、y880a0d 2.2.3、程序全代码:;武汉科技大学信息科学与工程学院自动化1201余义 指导老师:程磊 STACKS SEGMENT STACK ;堆栈段 DW 128 DUP(?) ;注意这里只有128个字节 STACKS ENDS DATA SEGMENT TIPS0 DB Tips:,0DH,0AH,$ TIPS1 DB SEX: 1:male 0:female,0DH,0AH,$ TIPS3 DB Please input ID:$ TIPS4 DB Please enter r to return$ TIPS5 DB Please enter r to return,c to c
8、ontinue$ ID DB ID: $ NAM DB NAME: $ SEX DB SEX: $ SCORE DB SCORE: $ FID DW ? ;文件号 SEXM DB man $ SEXF DB womam $ MESS1 DB WUST Student Grade Management System YUYI ID:201204134019 ,0AH,0DH,$ MESS2 DB *Mr.CHEN*WELCOME*, 0AH,0DH,$ MESS3 DB * insert (i) * * * * * * * * ,0AH,0DH,$ ;插 MESS4 DB * delete (d
9、) * * * * * * ,0AH,0DH,$ MESS5 DB * query (q) * * * * * * ,0AH,0DH,$ MESS6 DB * list (l) * * * * * * ,0AH,0DH,$ MESS7 DB * exit (e) * * * * *,0AH,0DH,$ ;退 MESS8 DB * ,0AH,0DH,$ MESS9 DB please chose IMDQLE above all: ,$ ;输入选择功能 ID_LENGTH EQU 4 ;配置信息 ID4位数 NAM_LENGTH EQU 10 ;名字,10个字符 SEX_LENGTH EQU 1
10、 ;性别,1位 SCORE_LENGTH EQU 5 ;分数,5位,范围为0-100 STU_LENGTH DW ? ;每条学生信息总长度 STU_LENGTH_ADD1 DW ? NAM_SEX_SCORE_LENGTH DW ? DEL DB 30 DUP ( ) ;清空信息用 DEL_DONE DB you hace deleted !$ ERR DB Data error,Please input again!$ ;错误提示信息 NOSTU DB Sorry,there is no this studnet!$ ERR_NO DB Sorry,No student informatio
11、n!$ ERR_SAME DB The ID have recorded,please input again!$ NEWF DB 0DH,0AH,0DH,0AH, Warning: this operation will empty all your data!,0DH,0AH,0DH,0AH, Will you continue? (y:empty,other key:return):$ FPATH DB c:masm615grade.txt,0 ;数据库文本 STR DB 50 ;缓冲区str DB ? DB 50 DUP (?) STR0 DB 50 DUP (?) ;缓冲区str0
12、ENTER DB $ ;空格 TMP DW 0 ;是否为空标志信息 SC DB 0 ;分数保护处用 DATA ENDS TAB MACRO ;换行 MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H ENDM CREATEF MACRO FILE_ID,FILE_PATH ;创建文件(传入文件号、传入文件路径) MOV AH,3CH MOV CX,00H ;普通文件 LEA DX,FILE_PATH INT 21H MOV FILE_ID,AX ENDM OPENF MACRO FILE_ID,FILE_PATH ;打开文件(传入文件号、传入文件路径)
13、 MOV AL,2 ;读写文式打开 MOV AH,3DH LEA DX,FILE_PATH INT 21H MOV FILE_ID,AX ENDM CLOSEF MACRO FILE_ID ;关闭文件(传入文件号) MOV BX,FILE_ID MOV AH,3EH INT 21H ENDM READF MACRO FILE_ID,TEMP,NUM ;读文件(传入文件号、传入缓冲区、传入字节数) MOV BX,FILE_ID LEA DX,TEMP MOV AX,NUM MOV CX,AX MOV AH,3FH INT 21H ENDM WRITEF MACRO FILE_ID,TEMP,NU
14、M ;写文件(传入文件号、传入缓冲区、传入字节数) MOV BX,FILE_ID MOV CX,NUM LEA DX,TEMP2 MOV AH,40H INT 21H ENDM MOVEF MACRO FILE_ID,STYPE,HIGEC,LOWD ;移动文件指针(传入文件号、传入移动方式、传入偏移字节(高位)传入偏移字节(低位) MOV BX,FILE_ID MOV AH,42H MOV AL,STYPE ;尾+偏移量方式 MOV CX,HIGEC ;偏移字节(高位) MOV DX,LOWD ;偏移字节(低位) INT 21H ENDM INPUT MACRO BUFFER,LENGTH
15、;输入字符串(传入字符串名、返回字符串长度) MOV AH,10 LEA DX,BUFFER INT 21H MOV LENGTH,BUFFER1 ENDM SHOW MACRO BUFFER ;显示字符串(传入字符串名) MOV AH,9 LEA DX,BUFFER INT 21H ENDM STAK SEGMENT STACK DB 200 DUP (?) STAK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA SHOW_EXIT PROC NEAR ;提示按r退出 PUSH AX PUSH BX PUSH CX PUSH DX TAB SHOW TIP
16、S4 EXIT_1: MOV AH,7 INT 21H CMP AL,r JNZ EXIT_1 POP DX POP CX POP BX POP AX RET SHOW_EXIT ENDP SHOW_EC PROC NEAR ;询问退出还是继续 PUSH AX PUSH BX PUSH CX PUSH DX TAB SHOW TIPS5 EXIT_2: MOV AH,7 INT 21H CMP AL,r JZ EXIT_4 CMP AL,c JNZ EXIT_2 CALL INSERT EXIT_4: POP DX POP CX POP BX POP AX RET SHOW_EC ENDP S
17、HOW_ERR PROC NEAR ;显示出错信息子程序 PUSH AX PUSH BX PUSH CX PUSH DX TAB SHOW ERR TAB POP DX POP CX POP BX POP AX RET SHOW_ERR ENDP RE_TMP PROC NEAR ;用空格初始化缓冲区子程序 PUSH AX PUSH BX PUSH CX PUSH DX MOV CX,50 MOV BX,1 RE: INC BX MOV STRBX, LOOP RE POP DX POP CX POP BX POP AX RET RE_TMP ENDP SHOW_STU PROC NEAR ;
18、显示学生信息子程序 PUSH AX PUSH BX PUSH CX PUSH DX SHOW ID ;ID MOV CX,ID_LENGTH MOV BX,-1 SH_ID: INC BX MOV DL,STR0BX MOV AH,2 INT 21H LOOP SH_ID SHOW ENTER SHOW NAM ;NAME MOV CX,NAM_LENGTH MOV BX,ID_LENGTH DEC BX SH_NAME: INC BX MOV DL,STR0BX MOV AH,2 INT 21H LOOP SH_NAME SHOW ENTER SHOW SEX ;SEX MOV BX,ID_
19、LENGTH ADD BX,NAM_LENGTH MOV DL,STR0BX CMP DL,1 ; 1显示male, 0显示female JNZ SEX_F SHOW SEXM JMP NN SEX_F: SHOW SEXF NN: SHOW ENTER SHOW SCORE ;SCORE MOV CX,SCORE_LENGTH MOV BX,ID_LENGTH ADD BX,NAM_LENGTH SH_SCORE: INC BX MOV DL,STR0BX MOV AH,2 INT 21H LOOP SH_SCORE POP DX POP CX POP BX POP AX RET SHOW_
20、STU ENDP;-insert录入- INSERT PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX TAB SHOW TIPS0 ;显示提示信息 SHOW TIPS1 TAB OPENF FID,FPATH ;打开文件 IN_ID: SHOW ID ; 学号 INPUT STR,BL ;向缓冲区输入ID CMP BL,ID_LENGTH ;看ID是否合法 JZ L1 JNZ ERR_ID ERR_SA: ;错误处理 TAB SHOW ERR_SAME TAB TAB JMP IN_ID ERR_ID: TAB CALL SHOW_ERR TAB JMP I
21、N_ID L1: ;ID判断只能为数字 MOV CX,ID_LENGTH LEA SI,STR+2 LN: MOV AL,BYTE PTRSI CMP AL,0 JB ERR_ID CMP AL,9 JA ERR_ID INC SI LOOP LN MOVEF FID,0,0,0 ;指针移到文件首 IA: MOVEF FID,1,0,5 IB: READF FID,STR0,STU_LENGTH ;读取学生信息 CMP AX,0 ;文件是否结束 JNZ IL1 JMP IC ;没有重复学号,可以插入 IL1: LEA SI,STR0 LEA DI,STR INC DI DEC SI MOV C
22、X,ID_LENGTH IL2: INC SI INC DI MOV AL,BYTE PTR DI CMP AL,BYTE PTR SI JNZ IA ;不符合条件读取下一个同学信息 LOOPZ IL2 JMP ERR_SA ;有重复学号 IC: MOVEF FID,2,0,5 WRITEF FID,STR,ID_LENGTH ;数据合法则写入数据 TAB IN_NAM: SHOW NAM ;姓名 CALL RE_TMP ;初始化缓冲区 INPUT STR,BL ADD BL,2 ;去掉回车 MOV BH,0 MOV SI,BX MOV STRSI, SUB BL,2 CMP BL,NAM_L
23、ENGTH JNA L2 ERR_NAM: CALL SHOW_ERR JMP IN_NAM L2: CMP STR2, ;姓名第一个字符不为空 JZ ERR_NAM CMP STR2,z JA ERR_NAM CMP STR2,A JB ERR_NAM CMP STR2,a JNB III CMP STR2,Z JA ERR_NAM CMP STR2,A JB ERR_NAM III: MOV CX,NAM_LENGTH MOV BX,2 II0: INC BX DEC CX CMP STRBX,z JA ERR_NAM CMP STRBX, JB ERR_NAM CMP STRBX,a JNB II0 CMP STRBX,Z JA ERR_NAM CMP STRBX,A JNB II0 CMP STRBX, JNZ ERR_NAM CMP CX,0 JNZ II0 WRITEF FID,STR,NAM_LENGTH TAB IN_SEX: S