《汇编语言综合性实验报告-显示学生名次(含代码).pdf》由会员分享,可在线阅读,更多相关《汇编语言综合性实验报告-显示学生名次(含代码).pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-.XXXXXXXXXXXX 计算机系综合性实验计算机系综合性实验实实 验验 报报 告告课程名称汇课程名称汇 编编 语语 言言实验学期实验学期 XXXXXXXX 至至 XXXXXXXX 学年学年 第第 X X 学期学期学生所在系部计算机系学生所在系部计算机系年级年级 XXXXXXXX 专业班级专业班级 XXXXXXXXXXXX学生学生 XXXXXX 学号学号 XXXXXXXXXXXXXXXXXXXXXXXX任课教师任课教师 XXXXXX实验成绩实验成绩 汇汇 编编 语语 言言 课程综合性实验报告课程综合性实验报告开课实验室:开课实验室:年月日年月日计算机系制计算机系制实验题目一、实验目的显示学
2、生名次表进展汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序和程序编程方法,稳固提高汇编语言程序设计能力应用水平。二、设备与环境PC 兼容机、Windows 操作系统、汇编程序 masm611三、实验容编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于 50 字节的GRADE 数组中,其中 GRADE+N 保存学号 N+1 的学生成绩。然后根据 GRADE 中的学生成绩,把学生名次填入 50 字节的 RANK 数组中,其中 RANK+N 的容是学号为 N+1学生的名次。再按学号把学生顺序把学生名次显示出来四、实验结果及分析(包括已完成什么功能,如何实现的、遇到的问题和解决方.
3、-可修遍-.法、流程图和关键代码解释,收获和体会等)1完成的功能:动态输入学生学号和成绩,对学生成绩进展排序并设置名次,再按学号把学生成绩和名次显示出来。2实现方法:充分运用宏汇编实现回车换行、数据的输入和输出,使用过程定义伪操作实现排名次和学生学号、成绩和名次的显示。3流程图:调用 input子程序Y是否继续输入输入学号和成绩开场N完毕按学号显示成绩和名次调用 print 子程序成绩排序并设置名次调用 rank子程序4关键代码:1、数据段定义:DATAS SEGMENTn db 0mc db 50 dup(0)cj db 50 dup()-优选.xh db 50 dup()m1 db 13,
4、10,Please input the ID:,13,10,$m2 db 13,10,Please input the mark:,13,10,$m3 db 13,10,Do you want to continue,13,10,$s1 db 13,10,*,13,10,$s2 db 13,10,IDmarkrank,13,10,$kongge db,$DATAS ENDS2、数据输入、输出宏定义:shuru macromov ah,1int 21hsub al,30hcbwmov bl,10mul blmov dl,almov ah,1int 21hsub al,30hadd dl,alen
5、dmshuchu macro nummov al,numcbwmov bl,10div blmov bl,ahmov dl,aladd dl,30hmov ah,2int 21hmov dl,bladd dl,30hmov ah,2int 21hendm3、排序并设置名次:rank proc near-优选.mov ah,0mov al,1mov si,0mov cl,nmov ch,0mov dl,99mov bh,0e1:push cxe2:mov bl,cjsicmp bl,dljne e4add mcsi,aladd bh,1cmp bh,1je e6jmp e4e3:sub al,1
6、e4:add si,1loop e2cmp bh,0jne e5pop cxmov bh,0sub dl,1cmp dl,-1mov si,0je e7jmp e1e5:pop axpop cxmov bh,0sub dl,1cmp dl,-1mov si,0je e7jmp e1e6:add al,1push axjmp e3e7:retrank endp-优选.4、按学号显示成绩和名次:print proc nearoutput s1output s2mov cl,nmov ch,0mov si,0exit:shuchu xhsioutput konggeshuchu cjsioutput
7、 konggeshuchu mcsicrlfadd si,1loop exitretprint endp5运行结果截图:6收获和体会:大一学习的是 C 语言,因此,在学汇编语言之初,面对格式之类的感觉很不适应。C 语言用的是一个又一个变量,而汇编语言那么是利用一个又一个存放器来实现。而写代码的时候,经常会因为一些符号,或者字长的失误,完全是无心之失而导致程序无法执行。而回过来找错误的时候,又往往忽略了这些细节而找不到错-优选.误的根源。学习汇编是个艰辛的过程,从 C 语言到汇编的不适,到牢记大量的指令,并熟练应用,都要花费很多时间适应。对有些指令的源操作数和目的操作数,以及操作结果的存放位置都
8、要熟记于心。否那么,你将很难应用这些指令,学习汇编的一个重要能力就是能够熟练调试所写程序,当某个程序不能执行时,而又发现不了错误,这就要对程序进展逐步调试了。这样更容易发现错误点并牢记。评定工程评定工程算确程序构造合理语法、语义正确A AB BC CD D评定工程评定工程操作熟练实验结果正确文字流畅、报告规A AB BC CD D教教师师评评价价其他:评价教师签名:年月日附代码:crlf macromov ah,2mov dl,10int 21hmov ah,2mov dl,13int 21h-优选.endmoutput macro stringmov dx,offset stringmov
9、ah,9int 21hendmshuru macromov ah,1int 21hsub al,30hcbwmov bl,10mul blmov dl,almov ah,1int 21hsub al,30hadd dl,alendmshuchu macro nummov al,numcbwmov bl,10-优选.div blmov bl,ahmov dl,aladd dl,30hmov ah,2int 21hmov dl,bladd dl,30hmov ah,2int 21hendmDATAS SEGMENTn db 0mc db 50 dup(0)cj db 50 dup()xh db 5
10、0 dup()m1 db 13,10,Please input the ID:,13,10,$m2 db 13,10,Please input the mark:,13,10,$m3 db 13,10,Do you want to continue,13,10,$s1 db 13,10,*,13,10,$s2 db 13,10,IDmarkrank,13,10,$kongge db,$DATAS ENDS-优选.STACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMO
11、V DS,AXagain:call inputadd n,1output m3mov ah,1int 21hcmp al,yje againcall rankcall printMOV AH,4CHINT 21Hinput proc nearoutput m1shurumov bl,n-优选.mov bh,0mov xhbx,dloutput m2shurumov bl,nmov bh,0mov cjbx,dlretinput endprank proc nearmov ah,0mov al,1mov si,0mov cl,nmov ch,0mov dl,99mov bh,0e1:push c
12、xe2:mov bl,cjsicmp bl,dljne e4add mcsi,aladd bh,1-优选.cmp bh,1je e6jmp e4e3:sub al,1e4:add si,1loop e2cmp bh,0jne e5pop cxmov bh,0sub dl,1cmp dl,-1mov si,0je e7jmp e1e5:pop axpop cxmov bh,0sub dl,1cmp dl,-1mov si,0je e7jmp e1-优选.e6:add al,1push axjmp e3e7:retrank endpprint proc nearoutput s1output s2mov cl,nmov ch,0mov si,0exit:shuchu xhsioutput konggeshuchu cjsioutput konggeshuchu mcsicrlfadd si,1loop exitretprint endpCODES ENDS-优选.END START-优选