资源描述:
《汇编实验-李浩-2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、昆明理工大学信息工程与自动化学院学生实验报告(2009—2010学年第一学期)课程名称:汇编语言程序设计开课实验室:33102009年11月18日年级、专业、班07级计算机科学与技术1班学号200930405901姓名李浩成绩实验项目名称用分支程序实现折半查找指导教师袁梅宇教师评语教师签名:年月日-9-一、实验目的1)掌握分支程序的设计方法;2)输入并汇编折半查找程序;3)将OBJ文件连接成EXE文件;4)观察并记录运行结果。二、实验原理及基本技术路线图(方框原理图)先初始化区间上下限。然后把要找的数与边界元素(表中最小数和最大数)比较,若匹配则表示找到,显示查找0次。若不是边界元素,则在
2、表中折半查找该值,若未找到则显示NOFOUND信息。若找到,在屏幕上显示找到的字符,并显示查找次数。所显示的第一位是输入的字符,第二位是找到的字符,第三和第四位是查找次数。开始初始化上界DI和下界SIAL=[SI]?小于相等AL=[DI]?大于大于相等小于初始化查找次数DX<-1BX<-[(SI+DI)/2]显示输入的字符、找到的字符和查找次数显示未找到NOFOUNDAL=[BX]?相等不等DI<-BXBX=SI? 相等小于大于SI<-BX结束DX<-DX+1-9-三、实验环境宏汇编MASM5.0。四、实验方法、步骤1、用计算机上的记事本编辑代码使其形成asm文件,并确认代码准确无误。
3、2、汇编、连接源程序,产生exe可执行文件。3、进入debug,并执行U命令和T命令查看。五、实验过程及结果首先点击【开始】-【运行】,输入“cmd”,进入dos界面,在其中找到存放zbcz.asm文件的盘符,并让其与link.exe和masm.exe放在一起。假如存放在c盘,则输入“c:”,则进入c盘,再进去文件的当前目录,然后输入“masmzbcz.asm”,即用masm.exe文件对该程序进行编译,令其生存obj文件。接着按回车,将出现如图所示的界面,我们可以为该执行文件取名,在【objectfilename[zbcz.OBJ]:】后输入新名字即可,如果不输入任何名字,则默认的是zb
4、cz.OBJ这个名字,此处用默认名。要注意的是如果这里改变了它的名字,在后面调用它时,就得用你给它定义的新名字了。一直按回车三次,将出现程序的编译结果提示,0错误、0警告,表示编译通过了。-9-然后输入“linkzbcz.obj”,回车,表示链接zbcz.obj文件,按回车,我们将发现生成了zbcz.exe的可执行文件,同样我们可以为其取新的名字,一直按回车。调试程序:运行zbcz.exe,所显示的第一位是输入的字符,第二位是找到的字符,第三和第四位是查找次数。输入“debug”,输入u,反汇编命令。输入汇编指令t,查看每一步的运行结果。-9--9-六、总结通过这次实验,让我加深了对折半查
5、找的思想的理解,同时也加深了汇编程序中的跳转指令、移位指令、比较指令等指令以及分支程序的印象。七、附源代码STACKSGSEGMENTSTACK'S'DW64DUP('ST')STACKSGENDSDATASEGMENTBUFDB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45HCOUNTEQU$-BUFCHARDB?MARKDW0PROMPTDB'NOFOUND$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSGMAINPROCFARMOVAX,DATAMOVDS,A
6、XMOVAH,1INT21HMOVCHAR,ALLEASI,BUFMOVCX,COUNT-9-MOVDX,SIADDDX,CXMOVDI,DXMOVDX,0CMPAL,[SI]MOVBX,SIJBNOFIDJEFOUNDCMPAL,[DI-1]MOVBX,DIDECBXJANOFIDJEFOUNDMOVDX,1MOVAL,CHARC1:MOVBX,SIADDBX,DISHRBX,1CMPAL,[BX]JZFOUNDPUSHFCMPBX,SIJZNOFIDPOPFJLLESSMOVSI,BXJMPSHORTNEXT-9-LESS:MOVDI,BXNEXT:INCDXJMPC1NOFID:LE
7、ADX,PROMPTMOVAH,9INT21HJMPSHORTEXITFOUND:MOVMARK,DXPUSHDXMOVAH,2MOVDL,[BX]INT21HMOVCL,10POPAXDIVCLORAX,3030HMOVDL,ALPUSHAXMOVAH,2INT21HPOPAXMOVDL,AHMOVAH,2INT21HEXIT:MOVAX,4C00HINT21HMAINENDP-9-CODEENDSENDMAIN-9-