001DOS可执行程序结构剖析

001DOS可执行程序结构剖析

ID:44290146

大小:138.16 KB

页数:8页

时间:2019-10-20

001DOS可执行程序结构剖析_第1页
001DOS可执行程序结构剖析_第2页
001DOS可执行程序结构剖析_第3页
001DOS可执行程序结构剖析_第4页
001DOS可执行程序结构剖析_第5页
资源描述:

《001DOS可执行程序结构剖析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、DOS可执行程序结构剖析木文通过对.COM程序和.EXE程序加载时不同内存映象的研究进而得出:.COM程序只冇一个物理段,段的最大长度为64KB:.COM程序只能从偏移地址为1()()H处开始执行。DOS对.EXE文件长度没有约束,便于组织人型应川程序;以及.EXE文件中用END启动标号來说明启动点,用PUSHDS來保存程序段前缀的段地址,用SUBAX,AX和PUSHAX指令来保存PSP中INT20H指令首地址的必耍性。从屮还可看出:由JCOM程序比.EXE程序规模小而简单,所以.COM程序装入速度比.EXE程序装入速度要快。为进一步发挥汇编语言程序执行速

2、度快的优势提供参考。在MS-DOS中,有两种类型的可执行程序,即.COM程序和.EXE程序。8086/8088汇编语言也有相应两种程序结构的文件,可分别编译最终形成.COM程序和.EXE程序。而汇编语言乂是计算机能提供给用户的最快而乂最有效的语言,因而在对于程序的空I'可和时间要求很高的场合,汇编语言是必不可少的,所以从根木上阐HJJ.EXE文件和.COM文件的程序结构特点,以及它们Z间的区别,两种程序的不同加载情形和程序段前缀结构特征,是真正领会汇编语言编程的必要条件。1码段的基本组成对于1个汇编语言小程序,可以不定义数据段、附加段和堆栈段,但不能不定义代

3、码段,没有码段则不成为程序,所以首先來认识一下码段的基本组成。1.18086/8088汇编语言程序的.EXE文件(“标准序”)结构形式如图1CODESEGMENTASSUMECSsCO[;EMAINPROCFARSTART,PUSHDSSUBAX.AXPUSHAXMAINENDFCODEENDSENDSTART图1.EXE文件的结构1.1」为了正确汇编,汇编程序在汇编时必须清楚程序屮段的结构以及各种指令在执行时应该访问哪-个段?即程序中段和段寄存器的关系,这可由ASSUME伪操作來实现。格式为:ASSUME段寄存器1:段名1,段寄存器2:段名2,…女fl:A

4、SSUMECS:CODE,DS:DATA,SS:STACK这实际上就是说,码段CODE的段地址值放在CS段寄存器中,数据段DATA的段地址值放在DS段寄存器屮,堆栈段STACK的段地址值放在SS段寄存器中。1.1.2ASSUME仅仅是指明段寄存器与段的关系,并未保存段地址,所以如有数据段、附加段、堆栈段,则必须保存段地址。码段不需保存段地址,因为码段的这一操作是在程序初始化时完成。格式为:MOVAX,段名MOV段寄存器,AXMOVAX,DATA如:MOVDS,AX1.1.3汇编语言程序是DOS的一个子程序,所以要把汇编语言程序的主体部分定义成一个远过程,以便

5、由DOS调用该过程,在程序结束时用RET指令返回DOSo格式为:过程名PROCFARRET过程名ENDP1.1.4为了在程序结束时用RET指令能止确返回DOS,在码段的开始处,必须保存DOS现场即保存返回地址,保存返回地址的指令为:PUSHDSSUBAX,AXPUSHAX1.18086/8088汇编语言程序的.COM文件结构形式如图2CODESEGMENTORG10011ASSUMECS;CWE.1>S:CODEASSUMEES:CODEMAINPROCNEARSTART;MOVAH.K'H1NT21HMAINENDPCODEENDSENDSTART使用.C

6、OM文件吋,程序不分段,其入口点必须是0100H,也不必设置堆栈段,「I.对所有的过程均应定义为NEAR属性。图2.COM文件的结构2程序的加载程序的加载是指将・EXE文件或.COM文件装入内存并执行之,加载1个程序是由DOS的4BH号系统功能来完成的。程序装入内存时,DOS还在它的前面安装1个256(100H)字节长的程序段前缀(ProgramSegmentPrefix),作为DOS与运行程序的软件接口。2.1程序段前缀(PSP)程序段前缀(PSP)简言之就是1个数据结构,它和用户程序本身位于同一内存分配块中,构成一个不可分割的整体。它是DOS(作为加载程

7、序的父程)和被加载程序的软件接口。它主要是用來存放与用户程序冇关的一些控制信息,并提供程序正常或异常结束时返回DOS的途径。它总共有256个字节长,位于程序所在段的起始位置。PSP的DOS结构如图3所示:PSP^OOHINI20H指今码P2H内存大小保苗•05H进入INT2fH老式入口CALL的播令>0AHINT22X入口INT23H入口■+12HINI24H入口保饲环境块的段地址保留*50HINT21HIB令阳RET(Far)指令码*5CH格式化的未打开的FC6100>6CH格式化的未打开的FCB200■80H+OFFH未格式化的命令行参鞍及其计数图3程序

8、段前缀结构1.2.COM文件的内存映彖—个.COM程

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。