欢迎来到天天文库
浏览记录
ID:1044962
大小:131.00 KB
页数:7页
时间:2017-11-07
《实验六汇编语言程序上机过程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验六汇编语言程序的上机过程d:hb2MASM.exeLINK.exeCREF.exe一.实验目的:1.熟悉IBMPC汇编语言的上机几个阶段。2.通过一个简单的程序实例,掌握汇编语言的编辑、汇编、连接以及DEBUG调试的全过程二.实验内容:把40个字母a的字符串从源缓冲区传送到目的缓冲区三.实验设备:IBMPC机,DOS或WINDOWS,MASM程序,LINK程序DEBUG程序四.实验过程:1.建立ASM文件用EDIT编辑程序在磁盘上建立源程序ex6.asmdatasegment;定义一个数据段source_bufferdb20dup(‘c’)d
2、ataendsextrasegment;定义另一个数据段dst_bufferdb20dup(?)extraendsprognamsegment;定义一个程序段mainprocfarassumecs:prognam,ds:data,es:extrastart:pushdssubax,axpushaxmovax,datamovds,ax;将data段的首地址装入DSmovax,extramoves,ax;将extra段的首地址装入ESleasi,source_buffer;将源缓冲区的起始偏移地址装入SIleadi,dst_buffer;将目的缓冲区的
3、起始偏移地址装入DIcld;设置方向标志DFmovcx,20;设置计数器CXrepmovsb;传输数据串ret;返回DOSmainendpprognamendsendstart;结束汇编,程序的起点是start2.用MASM程序产生OBJ文件在保存MASM程序的目录下键入:D:hb>masmex6.asm操作与汇编程序回答如下:Objectfilename[EX6.OBJ]:Sourcelisting[NUL.LST]:ex6.lstCross-reference[NUL.CRF]:ex6.crf3.用LINK程序产生EXE文件键入D:hb>l
4、inkex6.objRunFile[EX6.EXE]:ListFile[NUL.MAP]:Libraries[.LIB]:4.程序的执行可以在DOS下直接执行的得到的ex6.exe文件了。D:hb>ex6.exe5.程序的调试:执行debugex6.exe命令:D:hb>debugex6.exe(1)在debug命令提示符“-”下键入U命令,查看程序在主存中的物理地址,显示如下:-u1434:00001EPUSHDS1434:00012BC0SUBAX,AX1434:000350PUSHAX1434:0004B82E14MOVAX,142E14
5、34:00078ED8MOVDS,AX1434:0009B83114MOVAX,14311434:000C8EC0MOVES,AX1434:000E8D360000LEASI,[0000]1434:00128D3E0000LEADI,[0000]1434:0016FCCLD1434:0017B92800MOVCX,00281434:001AF3REPZ1434:001BA4MOVSB1434:001CCBRETF程序是以RETF结束,可以看到程序从1434:0000到1434:001C。code、data、extra段地址分别为什么?(2)用D命令
6、分别查看data段和extra段中的内容-d142E:0000L16-d1431:0000L16(3)用G命令执行这一段程序-g=1434:00001434:001C(4)用D命令分别查看data段和extra段中的内容-d142E:0000L16-d1431:0000L16比较结果可见,程序执行前后,data段和extra段内的数据有什么变化?。思考题:(1)你是如何判断自己程序的代码段被操作系统装入内存何处?(即段地址段长度分别是什么?)答:使用API函数(2)分析一下程序结束后REPMOVSB指令执行后对SI,DI,CX有什么养的影响?答:R
7、EP MOVSB进行串操作:1.源串首地址-->SI2.目的串首地址-->DI3.串长度-->CX4.设置方向标志CLD--->DF=0地址自增STD--->DF=1地址自动减5.执行串操作REPMOVSB(3)如果串复制的顺序是从最后一个串字符开始,请问源程序应作怎样的修改?
此文档下载收益归作者所有