汇编基础程序编写教程示例
发布时间:2021-11-08 07:06:26 所属栏目:教程 来源:互联网
导读:目录 源程序1.1 构成寄存器与段的关联假设标号定义一个段程序结束标记程序返回程序运行1.2 源程序中的程序1.3 段结束、程序结束、程序返回1.4 语法错误和逻辑错误2 程序执行的过程2.1 一个汇编语言程序从写出到最终执行的简要过程:2.2 连接2.3 可执行文件2
目录 源程序1.1 构成寄存器与段的关联假设标号定义一个段程序结束标记程序返回程序运行1.2 源程序中的“程序”1.3 段结束、程序结束、程序返回1.4 语法错误和逻辑错误2 程序执行的过程2.1 一个汇编语言程序从写出到最终执行的简要过程:2.2 连接2.3 可执行文件2.4 程序执行过程的跟踪总结3 程序编写3.1 两个基本的问题3.2 数据在哪里 立即数(idata)寄存器段地址(SA)和偏移地址(EA)3.3 指令处理的数据有多长3.4 数据处理在代码段中使用数据在代码段中使用栈将数据、代码、栈放入不同的段CPU如何知道去执行它们?3.5 模块化实现:call 和 ret 指令retretf示例主要应用格式 源程序 1.1 构成 寄存器与段的关联假设 assume:含义为“假设”。 它假设某一段寄存器和程序中的某一个用 segment … ends 定义的段相关联。 通过assume说明这种关联,在需要的情况下 ,编译程序可以将段寄存器和某一个具体的段相联系。 标号 一个标号指代了一个地址。 codesg:放在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。 定义一个段 segment和ends的功能是定义一个段,segment说明一个段开始,ends 说明一个段结束。 segment和ends是一对成对使用的伪指令 一个段必须有一个名称来标识,使用格式为: 段名 segment 段名 ends 一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。 一个有意义的汇编程序中至少要有一个段,这个段用来存放代码。 程序结束标记 End 是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指令 end,就结束对源程序的编译。 如果程序写完了,要在结尾处加上伪指令end 。否则,编译器在编译程序时,无法知道程序在何处结束。 注意:不要搞混了end和ends。 程序返回 一个程序结束后,将CPU的控制权交还给使它得以运行的程序,我们称这个过程为:程序返回。 如何返回 应该在程序的末尾添加返回的程序段。 mov ax,4c00H int 21H 程序运行 DOS是一个单任务操作系统。 一个程序P2在可执行文件中,则必须有一个正在运行的程序P1,将P2从可执行文件中加载入内存后,将CPU的控制权交给P2,P2才能得以运行。P2开始运行后,P1暂停运行。 而当P2运行完毕后,应该将CPU的控制权交还给使它得以运行的程序P1,此后,P1继续运行。 1.2 源程序中的“程序” 汇编源程序: 伪指令 (编译器处理) 汇编指令(编译为机器码) 程序:源程序中最终由计算机执行、处理的指令或数据。 注意 我们可以将源程序文件中的所有内容称为源程序,将源程序中最终由计算机执行处理的指令或数据 ,成为程序。 程序最先以汇编指令的形式存在源程序中,经编译、连接后转变为机器码,存储在可执行文件中, 1.3 段结束、程序结束、程序返回 1.4 语法错误和逻辑错误 语法错误 程序在编译时被编译器发现的错误 逻辑错误 程序在编译时不能表现出来的、在运行时发生的错误 2 程序执行的过程 2.1 一个汇编语言程序从写出到最终执行的简要过程: 2.2 连接 作用 当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标文件后,再用连接程序将它们连接到一起,生成一个可执行文件; 程序中调用了某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件; 一个源程序编译后,得到了存有机器码的目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接程序将这此内容处理为最终的可执行信息。 所以,在只有一个源程序文件,而又不需要调用某个库中的子程序的情况下,也必须用连接程序对目标文件进行处理,生成可执行文件。 注意,对于连接的过程,可执行文件是我们要得到的最终结果。 使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件;再用连接程序对目标文件进行连接,生成可在操作系统中直接运行的可执行文件。 2.3 可执行文件 可执行文件中包含两部分内容: 程序(从原程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据) 相关的描述信息(比如:程序有多大、要占多少内存空间等) 执行可执行文件中的程序 在操作系统中,执行可执行文件中的程序。 操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如:设置CS:IP指向第一条要执行的指令),然后由CPU执行程序。 (编辑:我爱故事小小网_铜陵站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |