资源描述:
《实验四_循环结构总汇编语言程序设计实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文档循环结构汇编语言程序设计实验报告文案大全实用标准文档实验四循环结构汇编语言程序设计一、实验目的1、学习循环结构的汇编语言程序的设计和调试。2、学习通过直接对8086计算机的寄存器和内存的直接访问,编写更高效简洁的汇编程序。3、加深掌握计算机整体的工作过程。3、加深对排序算法的理解。二、实验任务编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。要求至少采用二种不同的排序算法来实现。(快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序
2、……)三、实验内容为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实验。1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如下所示:文案大全实用标准文档1、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:文案大全实用标准文档四、实验环境PC机:winXP/win7(32位)/win7(64位)+winxp虚拟机汇编工具:Masm.exe+Link.exe。五、实验步骤1)建立和生成的文件(1)编写的源程序,源程序名为abc、扩展名为.asm(2)源程序经汇编
3、程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj(3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe文案大全实用标准文档2)汇编环境最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如huibian)中,并将文件夹huibian放在硬盘根目录C:>下3)上机步骤进入DOS窗口中执行。4)调试程序进入DEBUG后,调试程序5)调试成功后重新汇编、连接并生成可执行代码6)执行程序,并对运行结果截
4、图。利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48)利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)文案大全实用标准文档六、实验心得通过本次循环结构汇编语言程序设计的实验,我初步了解了汇编语言的基本语法,利用汇编语言的循环结构实现了对于数组A中元素的排序以及求得元素中的最大值最小值。另外,在实验过程中,我也了
5、解到了,我们要时刻细心严谨,认真做好每一步,避免出现低级错误。七、汇编语言代码1、利用冒泡排序实现求最大值最小值的代码datasegmentmes1db'themax:$'mes2db'themin:$'adw13,0,59,900,587,1,657,234,34,48dataendscodesegmentmainprocfarassumecs:code,ds:datastart:文案大全实用标准文档pushdssubax,axpushaxmovax,datamovds,ax;以下是起泡排序核心代码
6、movcx,10deccxloop1:movdi,cxmovbx,0loop2:movax,a[bx]cmpa[bx+2],axjgecotinuexchgax,a[bx+2]mova[bx],axcotinue:addbx,2looploop2movcx,dilooploop1movdx,offsetmes1movah,09h文案大全实用标准文档int21hmovbx,a[18]callbini;转换为十进制的子程序movdx,offsetmes2movah,09hint21hmovbx,a[0]c
7、allbiniretmainendpbiniprocnearmovcx,10000dcallbinmovcx,1000dcallbinmovcx,100dcallbinmovcx,10dcallbinmovcx,1dcallbinretbiniendpbinprocnearmovax,bx文案大全实用标准文档movdx,0divcxmovbx,dxmovdl,aladddl,30hmovah,02hint21hretbinendpcrlfprocnearmovdl,0ahmovah,02hint21h
8、movdl,0dhmovah,02hint21retcrlfendpcodeendsendstart2、利用选择排序实现排序的代码SAVEREGmacropushaxpushbxpushcx文案大全实用标准文档pushdxpushsipushdiendmRESAVEREGmacropopdipopsipopdxpopcxpopbxpopaxendm;************************datasegmentarrdw13,20,59,900,