1、汇编语言学生信息管理系统实验报告32页word文档微机原理技术与接口实验报告学院: 专业: 班级: 姓名: 学号: 微机原理与接口技术试验实验目的掌握熟练汇编语言实验要求课本P119页31题实验环境文本编辑器,MASM5.0. windows7实验设计 子程序名称及功能子程序名称功能ins_stu录入学生信息。判断输入字符串长度以避免缓冲区溢出。score_sort根据成绩对学生排序。num_sort根据学号对学生排序。print_seq按序列输出学生信息。get_average算平均分并输出。get_sat统计分数段并输出。str2num将学号由字符串形式转为整数形式。score_fmt将成
2、绩由字符串形式转为10倍整数形式。智能处理小数点。pscore将10倍整数形式的成绩按小数格式输出。pnum输出10进制数字pstu输出学生信息,入口:ax存储学生编号子程序调用关系图1、输入学生信息2、按学号排序输出3、按成绩排序输出4、统计并输出平均成绩5、统计并输出各分数段程序源代码(见附页)程序运行结果附页(源代码如下).model small;small,程序只能有一个代码段和一个数据段.stack 200h;堆栈段名stack,默认大小1024字节,这里是200h字节.data;数据段名_data student struc;学生的数据结构,32字节,25,便于计算地址 xname
3、 db 14 dup($) class db 14 dup($) num dw 0 score dw 0;为保存1位小数,以10倍值保存 student ends stu_size equ 32;32=25 stu_db student 100 dup();100名学生的空间stu_num db 0;已保存的学生人数stu_seq db 100 dup($);排序信息,排序操作在序列中进行,排序结果体现在序列中welcome db =Student Information Mannagement System=,0dh,0ah; 打印菜单db0. Add record.,0dh,0ah;0.
4、录入学生成绩(十进制形式)db1. Sortby number.,0dh,0ah;1. 按学号排序显示db2. Sortby score.,0dh,0ah;2. 按成绩排序显示db3. Show Average,0dh,0ah;3. 统计平均成绩db4. Show Statistics.,0dh,0ah;4. 统计各分数段人数db5. Exit.,0dh,0ah;5. 退出db$msg1 dbname:,$msg2 dbclass:,$msg3 db number:,$msg4 db score:,$m_str_l db 0dh,0ah,length14byte ,$m_num_l db 0d
5、h,0ah,value=90inc n91jmp SAT_INIS6:inc ns6jmp SAT_INI67:inc n67jmp SAT_INI78:inc n78jmp SAT_INI89:inc n89jmp SAT_INSAT_OUT:mov ah,0ps ms6mov al,ns6call pnumendlps m67mov al,n67call pnumendlps m78mov al,n78call pnumendlps m89mov al,n89call pnumendlps m91mov al,n91call pnumendlpop cxpop bxpop axretget
6、_sat endp;print_seq:根据序列stu_seq输出列表;输入:stu_seq;输出:;存储单元:stu_seqprint_seq proc nearpush axpush bx;stu_seq保存了编号序列,以$结束lea bx,stu_seqPRINT_SEQ_BEGIN:mov al,bxcmp al,$jz PRINT_SEQ_ENDmov ah,0call pstuinc bxjmp PRINT_SEQ_BEGINPRINT_SEQ_END:pop bxpop axretprint_seq endp;num_sort:按学号排序;输入:stu_seq;输出:stu_se
7、q;存储单元:num_sort proc nearpush bxpush dxmov dl,0lea bx,stu_seqSORT_BEGIN:cmp dl,stu_numjae SORT_ENDmov BYTE ptr bx,dlinc bxinc dljmp SORT_BEGINSORT_END:mov BYTE ptr bx,$;stu_seq保存了按输入顺序的序列,以$结束cmp stu_num,1;学生数小于等于1,没必要排序jle NON_NUMmov cl,stu_num;循环次数,内存量不能直接减dec clmov ch,0LOOP1:mov di,cx;暂存外循环cxlea
8、bx,stu_seq;指向第一个序号LOOP2:mov al,BYTE ptr bxmov ah,0push bxGET_STUmov dx,bx.num;dx前一个序列号对应的学号pop bxmov al,BYTE ptr bx+1push bxGET_STUcmp dx,bx.num;bx.num后一个序列号对应的学号pop bxjae CONTImov al,BYTE ptr bx;小于则交换两个序列号;callpnum;endlxchg al,BYTE ptr bx+1;callpnum;endlmov BYTE ptr bx,alCONTI:inc bx;下一个序列号loop LOO
9、P2mov cx,di;恢复外循环loop LOOP1NON_NUM:pop dxpop bxretnum_sort endp;score_sort:按成绩排序;输入:stu_seq;输出:stu_seq;存储单元:score_sort proc nearpush bxpush dxmov dl,0lea bx,stu_seqSCORE_BEGIN:cmp dl,stu_numjae SCORE_ENDmov BYTE ptr bx,dlinc bxinc dljmp SCORE_BEGINSCORE_END:mov BYTE ptr bx,$;stu_seq保存了按输入顺序的序列,以$结束c
10、mp stu_num,1;学生数小于等于1,没必要排序jle NON_SCOREmov cl,stu_num;循环次数,内存量不能直接减dec clmov ch,0SLOOP1:mov di,cx;暂存外循环cxlea bx,stu_seq;指向第一个序号SLOOP2:mov al,BYTE ptr bxmov ah,0push bxGET_STUmov dx,bx.score;dx前一个序列号对应的学号pop bxmov al,BYTE ptr bx+1push bxGET_STUcmp dx,bx.score;bx.num后一个序列号对应的学号pop bxjae SCONTImov al,
11、BYTE ptr bx;小于则交换两个序列号;callpnum;endlxchg al,BYTE ptr bx+1;callpnum;endlmov BYTE ptr bx,alSCONTI:inc bx;下一个序列号loop SLOOP2mov cx,di;恢复外循环loop SLOOP1NON_SCORE:pop dxpop bxretscore_sort endpEND START希望以上资料对你有所帮助,附励志名言3条:1、上帝说:你要什么便取什么,但是要付出相当的代价。2、目标的坚定是性格中最必要的力量源泉之一,也是成功的利器之一。没有它,天才会在矛盾无定的迷径中徒劳无功。3、当你无法从一楼蹦到三楼时,不要忘记走楼梯。要记住伟大的成功往往不是一蹴而就的,必须学会分解你的目标,逐步实施。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1