《汇编语言》实验报告模板实验一.doc
院 系: 计算机科学学院 专 业: 年 级: 课程名称: 汇编语言 学 号: 姓 名: 指导教师: 2015年 月 日年级 2013级班号 学号 专业 姓名 实验名称8086汇编实验一 实验的基本要求与方法实验类型设计型综合型创新型实验目的或要求实验目的:实验是掌握汇编语言程序设计的步骤,学习使80X86汇编语言程序设计的基本方法和技能,熟练掌握用汇编语言设计、编码、调试和运行程序的方法,养成良好的程序设计习惯,为后续课程和将来相关的项目开发打下坚实的基础。1. 熟练操作宏汇编的开发环境,熟悉汇编语言的编译工具(MASM6.11)及调试器(Windbg)的使用。2. 掌握汇编语言的寻址方式和常用指令。3. 掌握汇编语言基本的程序设计方法和调试手段。4. 掌握子程序和宏指令的设计和调试手段。实验要求:1. 上机前应做好充分的准备。对选定的实验题要先进行设计包括程序框图、数据结构以及算法;上机之前先编好程序代码,并进行认真地静态检查,减少错误的发生,同时还有预先估计程序运行的结果或结果范围,做到心中有数。2. 上机时要遵守实验室的规章制度,爱护实验设备。要熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。在程序的调试过程中,有意识的学习及掌握Windbg程序的各种功能,以便掌握程序的调试方法和技巧。不互相抄袭,应自己动手按自己的算法编制程序,调试通过。3. 下机后要对实验结果进行整理,分析程序调试过程中所出现的各种情况,对未通过的程序更好认真分析原因,总结经验教训。实验题目1从键盘输入一同学的期中成绩、实验成绩、期末成绩和它们在总评成绩中分别占的百分比,计算得到该同学的总评成绩,并显示出来。实验要求:该程序提示输入3个成绩和所占百分比。可参考如下的例子显示:grade 1 ? 85percent 1 ? 20grade 2 ? 75percent 2 ? 20grade 3 ? 82percent 3 ? 60score is : 81提示: 总评成绩 (期中成绩×百分比1实验成绩×百分比2期末成绩×百分比3)/100实验原理(算法流程)1、程序清单。 数据段:.DATA ; reserve storage for datagrade1 DWORD ?grade2 DWORD ?grade3 DWORD ?string BYTE 20 DUP (?)prompt1 BYTE "Please input the grade1 : ",0prompt2 BYTE "Please input the percent of the grade1 : ",0prompt3 BYTE "Please input the grade2 : ",0prompt4 BYTE "Please input the percent of the grade2 : ",0prompt5 BYTE "Please input the grade3 : ",0prompt6 BYTE "Please input the percent of the grade3 : ",0prompt7 BYTE "The result is : ",cr,lf,0sum DWORD ?result BYTE 20 DUP (?) BYTE cr,lf,0代码段:.CODE ; start of main program code_start: output prompt1 input string,20 ;输入期中成绩1 atod string ;转换为整型 mov grade1,eax output prompt2 input string,20 ;输入百分数1 atod string ;转换为整型 mul grade1 ;计算grade1*percent1 mov sum,eax output prompt3 input string,20 ;输入grade2 atod string ;转换为整型 mov grade2,eax output prompt4 input string,20 ;输入percent3 atod string ;转换为整型 mul grade2 ;计算grade2*percent2 add sum,eax output prompt5 input string,20 ;输入grade3 atod string ;转换为整型 mov grade3,eax output prompt6 input string,20 ;输入percent3 atod string ;转换为整型 mul grade3 ;计算grade3*percent3 add sum,eax mov eax,sum mov sum,100 div sum ;eax/100 dtoa result,eax output prompt7 output result INVOKE ExitProcess, 0 ; exit with return code 0PUBLIC _start ; make entry point publicEND ; end of source code2、执行结果截图实验题目2(附加题)编写一个过程Max3,该过程可以找出一个一维数组中(数组元素个数为10)的最大值,并将这个最大值放在ax寄存器中。(1)数组元素的存储空间是字。(2)编写一个完整的主程序,在主程序完成数组的输入和存储,并调用子过程完成最大值的搜索工作。1、程序清单。 数据段:.DATA ; reserve storage for dataprompt BYTE "从键盘输入10 个数据存入一堆数组中,并输出数组中的最大值。",cr,lf,0number BYTE 20 DUP (?)array1 DWORD 10 DUP (?)result BYTE "The max is :",cr,lfmax DWORD ? BYTE cr,lf,0代码段:.CODE ; start of main program codeMax3 PROC NEAR32 cmp value,10 ;判断此时的数是否是第一个数 jne endd mov value,eax ;将数组中的第一个数存入value endd: cmp value,eax ;比较数组中的数与value比较 jg endmax ;若value>eax则跳出 mov value,eax ;若value<eax则将数组中的数存入value endmax: retMax3 ENDP_start: output prompt mov ecx,10 lea ebx,array1 ;取有效地址fornumber: input number,20 atod number mov ebx,eax ;将数据存入数组中 add ebx,4 ;读取数组中的下一项的地址 call Max3 ;调用过程体 loop fornumberendfor: mov eax,value dtoa max,eax output result ;输出最大值 INVOKE ExitProcess, 0 ; exit with return code 0PUBLIC _start ; make entry point publicEND ; end of source code2、执行结果截图实验结果分析及心得体会内容包括:总结经验提高编程及调试能力。调试情况,如上机时遇到的问题及解决的办法,观察到的现象及其分析,对程序设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会等。 通过本次实验熟悉了汇编语言的寻址方式和一些常用指令(运算,循环,过程及其调用),了解了汇编语言中程序的特点,掌握了汇编语言中程序编写的方法,完善了编写一个完整的简单程序的整体思维结构。 成绩评定教师签名: 2015年 月 日