- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DOS可执行程序结构剖析
在MS—DOS中,有两种类型的可执行程序,即.COM程序和.EXE程序。8086/8088汇编语言也有相应两种程序结构的文件,可分别编译最终形成.COM程序和.EXE程序。而汇编语言又是计算机能提供给用户的最快而又最有效的语言,因而在对于程序的空间和时间要求很高的场合,汇编语言是必不可少的,所以从根本上阐明.EXE文件和.COM文件的程序结构特点,以及它们之间的区别,两种程序的不同加载情形和程序段前缀结构特征,是真正领会汇编语言编程的必要条件。
1 码段的基本组成 对于1个汇编语言小程序,可以不定义数据段、附加段和堆栈段,但不能不定义代码段,没有码段则不成为程序,所以首先来认识一下码段的基本组成。1.1 8086/8088汇编语言程序的.EXE文件(“标准序”)结构形式如图1
图1 .EXE文件的结构
1.1.1 为了正确汇编,汇编程序在汇编时必须清楚程序中段的结构以及各种指令在执行时应该访问哪一个段?即程序中段和段寄存器的关系,这可由ASSUME伪操作来实现。 格式为:ASSUME 段寄存器1:段名1,段寄存器2:段名2,… 如:ASSUME CS:CODE,DS:DATA,SS:STACK 这实际上就是说,码段CODE的段地址值放在CS段寄存器中,数据段DATA的段地址值放在DS段寄存器中,堆栈段STACK的段地址值放在SS段寄存器中。1.1.2 ASSUME仅仅是指明段寄存器与段的关系,并未保存段地址,所以如有数据段、附加段、堆栈段,则必须保存段地址。码段不需保存段地址,因为码段的这一操作是在程序初始化时完成。 格式为: MOV AX,段名 MOV段寄存器,AX MOVAX,DATA如: MOVDS,AX1.1.3 汇编语言程序是DOS的一个子程序,所以要把汇编语言程序的主体部分定义成一个远过程,以便由DOS调用该过程,在程序结束时用RET指令返回DOS。 格式为: 过程名 PROC FAR . . . RET 过程名 ENDP1.1.4 为了在程序结束时用RET指令能正确返回DOS,在码段的开始处,必须保存DOS现场即保存返回地址,保存返回地址的指令为: PUSH DS SUBAX,AX PUSHAX1.2 8086/8088汇编语言程序的.COM文件结构形式 如图2
使用.COM文件时,程序不分段,其入口点必须是0100H,也不必设置堆栈段,且对所有的过程均应定义为NEAR属性。
?
图2 .COM文件的结构
2 程序的加载 程序的加载是指将.EXE文件或.COM文件装入内存并执行之,加载1个程序是由DOS的4BH号系统功能来完成的。程序装入内存时,DOS还在它的前面安装1个256(100H)字节长的程序段前缀(Program Segment Prefix),作为DOS与运行程序的软件接口。2.1 程序段前缀(PSP) 程序段前缀(PSP)简言之就是1个数据结构,它和用户程序本身位于同一内存分配块中,构成一个不可分割的整体。它是DOS(作为加载程序的父程)和被加载程序的软件接口。它主要是用来存放与用户程序有关的一些控制信息,并提供程序正常或异常结束时返回DOS的途径。它总共有256个字节长,位于程序所在段的起始位置。PSP的DOS结构如图3所示:
图3 程序段前缀结构
2.2 .COM文件的内存映象 一个.COM程序存储在磁盘中的内容同执行时装进内存的内容完全一致。执行时只是简单地将.COM程序拷贝到程序段前缀的紧上端,起始地址为100H,.COM文件装入内存后的映象如图4所示:
图4 .COM文件的内存映象
由此内存映象图可看出: (1)当1个.COM程序开始执行时,所有的段寄存器(CS,DS,SS和ES)都含有相同的值,都是程序段前缀(PSP)所在段的段地址。即4个段实际上是同一物理段,段的最大长度为64KB,这也是.COM文件长度的最大限度。 (2).COM程序是从偏移地址值为100H处开始执行的。DOS强行设置IP=0100H,即初始的CS:IP规定指向PSP之后的第1个字节位置。于是在编写.COM文件源程序时,在用ORG 100H伪指令预留PSP空间后,其后的第1条指令应该是1条可执行的指令。 (3)整个.COM程序必须在1个物理段(64KB)内,段尾处的1个字作为堆栈使用。在将控制权移交给.COM程序前,MS-DOS总要将1个字0压进堆栈。减去这个字和程序段前缀占用的256个字节空间,余下的空间便是.COM程序可以使用的空间。也就是说,.CO
您可能关注的文档
- 中南大学数据结构和算法第10章内部排序课后作业答案.doc
- 六一儿童节游园活动的项目与游戏规则.doc
- 毕业论文:电子商务的应用现状和发展前景的探讨.doc
- 什么是特征阻抗 已读解析.doc
- 第一讲.SSL握手协议的研究.docx
- 群文阅读见解课件.doc
- 第五章 android四层框架.doc
- 2011年助理电子商务师考试模拟试题与答案解析.doc
- 初中文言文常见文言虚词用法一览表讲述.doc
- VB程序设计试题和答案解析.doc
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
最近下载
- 2024年湖北省中考历史试题卷(含答案及解析).docx
- 爱护我们的五官幼儿主题班会PPT课件.pptx VIP
- 2020人教版二年级数学下册易错题型及答案.pdf VIP
- 2024届高考专题复习:小说叙述视角课件(共24张PPT) (1).pptx VIP
- 2024届高考专题复习:小说叙述视角.pptx VIP
- 《道德与法治》六年级下册全册知识点汇总.docx
- 测测达人版平台服务规则考试题库答案APP测测基础认证题.docx
- 江苏省苏州常熟市七年级数学下学期期末考试试题.docx VIP
- 建筑地基处理技术规范.pptx
- T_CACM 1270-2019 中医内科临床诊疗指南 脓毒症.docx
文档评论(0)