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