资源描述
院 系: 计算机科学学院 专 业: 计算机科学与技术 年 级: 2014级 课程名称: 汇编语言 学 号: 姓 名: 指导教师: 2015年 12 月 9 日年级2014级班号学号专业计算机科学与技术姓名实验名称8086汇编实验四 子程序和串指令实验类型设计型综合型创新型实验目的或要求实验目的:掌握子程序设计的原理和方法,重点掌握子程序编写和调用的过程以及堆栈操作和参数以及局部变量的概念。掌握串操作指令的用法,注意DF标识位以及源串、目标串的存储和改变。实验要求:(1)编写子程序(2)在主程序中调用子程序(3)实现主程序与子程序的参数传递.实验1 题目:写一个过程avg,该过程可找出一个字串的平均值,过程avg有两个参数,用堆栈进行参数传递。(1)串的地址 (2)串中元素的个数。实验要求:例如,输入的串元素为1,3,-9,5,12,那么输出是: 2。1、程序清单。.386.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORDINCLUDE io.h ; header file for input/outputcr EQU 0dh ; carriage return characterLf EQU 0ah ; line feedmaxNbrs EQU 100.STACK 4096 ; reserve 4096-byte stack.DATA ; reserve storage for datatie byte 输入一个数组(以#结束),cr,lf,0nbrElts dw ?nbrArry dword maxNbrs dup (?)number byte 20 dup (?) byte cr,lf,0avgnumber dword ?.CODE ; start of main program codeavg PROC NEAR32 push ebp; mov ebp,esp; pushad pushf mov ebx,ebp+14 mov ecx,0 mov cx,ebp+12 movsx edx,cx mov eax,0 jecxz endcountforcount: add eax,ebx add ebx,4 loop forcount mov ebx,edx cwd idiv ebxendcount: mov ebx,ebp+8 mov ebx,eax popf popad pop ebp retavg ENDP_start: output tie mov nbrElts,0 lea ebx,nbrArryinput1: input number,20 cmp number,# je endwhile atod number mov ebx,eax inc nbrElts add ebx,4 jmp input1endwhile: lea eax,nbrArry push eax push nbrElts lea eax,avgnumber push eax call avg dtoa number,avgnumber output number add esp,10 INVOKE ExitProcess, 0 ; exit with return code 0PUBLIC _start ; make entry point publicEND ; end of source code2、执行结果截图实验结果分析及心得体会内容包括:总结经验提高编程及调试能力。调试情况,如上机时遇到的问题及解决的办法,观察到的现象及其分析,对程序设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会等。 通过实验发现自己还有很多的不足,对知识的理解不清晰,做每道题都会花费很多的时间来看课本,有很多简单的错误阻碍程序的正常运行。关于解题技巧:在做实验题目之前一定要认真读懂题目并认真思考分析,理清自己的思路,在草稿纸上先简单的规划好程序的着手点和过程,这样在写程序的时候才能清清楚楚的知道下一步该做什么,从而快速解决问题。成绩评定教师签名: 2015年 月 日
展开阅读全文