《编写汇编程序流程.pdf》由会员分享,可在线阅读,更多相关《编写汇编程序流程.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!编写汇编程序流程第个汇编程序个源程序从写出到执的过程第步:编写汇编源程序使本编译器(如 Edit,记事本等),汇编语编写汇编源程序第步:对源件进编译连接使汇编语编译程序对源程序件中的源程序进编译,产标件,再连接程序对标件进连接,成可在操作系统中直接运的可执件可执件包含两部分内容程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据)相关的描述信息(如,程序有多,要占多少内存空间等)这步作的结果,产了个可在操作系统中运的可执件第三步:执可执件中的程序在操作系统中,执可执件中的程序操作系统
2、按照可执件中的描述信息,将可执件中的机器码和数据加载内存,并进相关的初始化(如设置CS:IP指向第条要执的指令),然后由CPU执程序。源程序中的程序汇编语写的源程序,包括伪指令和汇编指令,我们编程的最终的是让计算机完成定的任务,源代码中的汇编指令组成了最终由计算机执的程序,源程序中的伪指令是由编译器来处理,它们并不实现我们编程的的,这所说的程序就是指源程序中最终由计算机执,处理的指令或数据注意,以后可以将源程序件中的所有内容称为源程序,将源程序中最终由计算机执,处理的指令或数据,称为程序。程序最先以汇编指令的形式存在源程序中,径编译,连接后转变为机器码,存储在可执件中。如图所:欢迎您阅读并下载
3、本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!标号汇编源程序中,除了汇编指令和伪代码外,还有些标号,如codesg。个标号指代了个地址。如codesg在segment的前,作为个段的名称,这个段的名称最终将被编译,连接程序处理为个段的段地址编辑源程序可以任意的本编译器来编译源程序,只要最终将其存储为纯本件即可,我们使DOS下的Edit进DOS式,运Edit在Edit中编辑程序,如图所将程序保存为件c:1.asm后,退出Edit,结束对源程序的编辑编译进DOS式,进c:masm录,运masm.exe,如图所注意,“.ASM“提我们,默认的件扩展名是asm,如,要编
4、译的源程序件名是p1.asm”,只要在这输p1即可,可如果源程序件不是以asm为扩展名的话,就要输它的全名,如源程序件名为p1.txt,就要输全名输要编译的源程序件名后,按enter键,如图所我们直接按enter键,使编译程序设定的标件名确定标标件名称后,如图所:忽略了列表件的成后,如图所:欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!忽略了交叉引件的成后,如图所:按照上的过程进了编译后,在编译器masm.exe运的录下,将出现个新的件:1.obj,这是对源程序1.asm进编译所得到的结果,当然如果编译过程中出现错误,那么将得不到标件,般来说,有
5、两类错误使我们得不到所期望的标件程序中有Severe Errors找不到所给出的源程序件连接在对源程序进编译得到标件,我们需要对标件进连接,从得到可执件。进DOS式,进C:masm录,运link.exe,如图所:确定了可执件的名称后,忽略了映像件的成后,忽略了库件的连接后,如图所:注意,对于连接的过程,可执件是我们要得到的最终结果1.exe的执现在,终于将我们的第个汇编程序加成了个可在操作系统下执的程序件,我们现在执下,如图所:程序运后,就和没有运样,那么,程序到底运了吗?程序当然运了,只是从屏幕上不可能看到任何运结果,因为,我们的程序根本没有向显器输出任何信息,程序只是做了些将数据送寄存器和
6、加法的操作,这些事情,我们法从显屏中看出来。谁将可执件中的程序装载进内存并使它运欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!在DOS中,可执件中的程序P1若要运,必须有个正在运的程序P2,将P1从可执件中加载内存,将CPU的控制权交给它,P1才能得以运,当P1运完毕后,应该将CPU的控制权交还给使它得以运的程序P2于是得出结论:在DOS中直接执1.exe时,是正在运的comomand,将1.exe中的程序加载内存command设置CPU的CS:IP指向程序的第个指令(即程序的),从使程序得以运程序运结束后,返回到command中,CPU继续运c
7、ommand总结汇编程序从写出到执的过程:编程(Edit)-1.asm-编译(masm)-1.obj-连接(link)-1.exe-加载(command)-内存中的程序-运(CPU)程序执过程的跟踪欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!可以debug来跟踪个程序的运过程,这通常是必须要做的作,我们写的程序在逻辑上不定总是正确,对于简单的错误,仔细检查下源代码就可以发现,对于影藏较深的错误,就必须对程序的执过程进跟踪分析才容易发现具体法:我们可以R命令看下各个寄存器的设置情况:cx中存放的是程序的长度,1.exe中程序的机器码共有15个字节
8、,则1.exe加载后,cx的内容为000FH可以U命令看下其他指令:可以看到,从12AE:000012AE:000E都是程序的机器码现在,我们可以开始跟踪了,T命令单步执程序中的每个指令,并观察每条指令的执结果,到了int 21,我们要P命令执,如图所:需要注意的是在DOS中运程序时,是command将程序加载内存中,所以程序运结束后返回到command中,在这是debug将程序加载内存,所以程序运结束后要返回到Debug中。使Q命令退出debug,将返回到command中,因为debug是由command加载运的,在DOS中“debug 1.exe运Debug对1.exe进跟踪后,程序加载的顺序是:command加载Debug,Debug加载1.exe,返回的顺序是:从1.exe中的程序返回到debug,从debug返回到command。