为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

【doc】PC汇编语言编写菜单程序中可执行文件调用方法分析

2017-10-23 13页 doc 29KB 31阅读

用户头像

is_977556

暂无简介

举报
【doc】PC汇编语言编写菜单程序中可执行文件调用方法分析【doc】PC汇编语言编写菜单程序中可执行文件调用方法分析 PC汇编语言编写菜单程序中可执行文件调 用方法分析 第9卷第1期 1994年3月 数据采集与处理 Journal.fDataAalui~ition8-Processing PC汇编语言编写菜单程序中 可执行文件调用方法分析弋. 周军干盛林 ''—— ———一————, (南京航空航天大学测试工程系南京,210.]6) 摘要利用Pc汇编语言编写的菜单程序,要求程序船够在可执行文件加载执行完以后退回到菜单 程序.文中对在DOS系统下内存管理分析的基...
【doc】PC汇编语言编写菜单程序中可执行文件调用方法分析
【doc】PC汇编语言编写菜单程序中可执行文件调用方法分析 PC汇编语言编写菜单程序中可执行文件调 用方法分析 第9卷第1期 1994年3月 数据采集与处理 Journal.fDataAalui~ition8-Processing PC汇编语言编写菜单程序中 可执行文件调用方法分析弋. 周军干盛林 ''—— ———一————, (南京航空航天大学测试工程系南京,210.]6) 摘要利用Pc汇编语言编写的菜单程序,要求程序船够在可执行文件加载执行完以后退回到菜单 程序.文中对在DOS系统下内存管理分析的基础上,结台有关DOS的内存管理功能,得出:在用4BH 功能之前,要首先在菜单程序的开头保存Psp的段地址,并用4AH功能修改菜单程序进人内存后所 占内存空间的大小.文中在l最后堵出了一个实倒程序,该程序在~5OS3.30环境下运行通过. 美键词程控制,塞鲢微型计算机内存控剞块 中围分类号:TP31J.52~"r'P313 引言 帮旁蝌 PC机丰富的软件资源使它广泛地应用在工业过程控制及系统管理方面.在开发PC机的 软件资源编制系统应用软件时,常采用按系统功能进行模块化分块的方法,这 种方法对于 软件编制人员是很有用的.从用户使用角度出发,要求有一个简单,方便的人一机接口界面,故 为用户设计一个操作菜单是很有必要的. 利用8086汇编语言编制出的程序具有简短和执行速度快的特点,利用8086汇编语言就 可以编出一个高效,简短的菜单操作程序.但用8086忙编语言编程时,由于对PC机软,硬件 ,特别是在编菜单程序中利用DOS功能调用其它可执行不了解,在调用DOS中断 文件时,就会 感到很困难.对于这个问题,我们是通过对DOS的内存管理及DOS对可执行文件的调用功能 的分析.从理论上解决了如何去调用另一个可执行的文件 lDOS的内存管理 一 般PC机都采用DOS操作系统来管理内存资源,它是单用户的操作系统,但在内存中仍 可依次加载和驻留若干个用户程序.为使用户程序与DOS之间保持通信,在每个程序前都有 一 个程序段前缀(PSP),其结构如图l所示.利用DEBUGCOM就可观察PSP中的内容.DE— BUGCOM在内存中的PSP如下所示: 收稿日期1993—02—23I修改稿收到日期:1993—93—22 ' ,, . ? ? 0_ 第1期周军等;PC汇编语言缩写菜单程序中可执行文件调用方法分析29 C)debug — d.0ff ll70:O000cD ll70.OO10C1 l170:0020FF ll70;0030FB 1170:004000 ll70;0050CD 1170j006020 1170:007020 1170008000 ll70:0090O0 1170:00A000 ii70;00B000 l170.0OCO00 1170;00D000 1l70:00E000 ll70:00F000 . DOS对内存的管理是以内存分配块(连续的内存空间)的形式为用户程序申请内 存并划分 RAM空间,每一个分配块均设置有一个内存控制块(McB),占一节,它说明该分配 块的位置和 节数,格式如下: 位移0lH3H5HOFH l堑里l坌墼垫垦些l坌墼垫堇墼l堡堕 长度(BYTE)i22ii 其中:标记只有4DH和5AH两种取值.4DH示本内存块不是最后一块;5AH表示本内存块 为最后一块.分配块段址为0,说明本内存块未被占用.被占用的内存块的分配块段址为加载 程序的PSP段址,在加载程序执行终止退回DOS或父程序时,它所占用的内存零被释放.分配 块节数指出了本控制块所拥有的内存空间大小.在计算机启动进入DOS状态后,内存的分配 情况如图2所示由图2可以看出,在DOS状态下装入的可执行文件占用了整个用户空间.编 写菜单程序时,要求菜单程序能够为自己保留足够的空间,并释放其它可用内存空间,供可执 行文件加载,执行. PsP上0H程序中止中断指令(INT20H)2 上2H可用内存空间(节为单位)2 +4H保留.】 +5H远调用指令(CALLFAR)5 0AHINT2棚入口4 +0EHINT23H入口4 +l2HINT2{H八口4 +l6H存放父进程PSP段址2 上18H保留20 /N..一........一一,一一.,一一一一一一一一 一,一一,一,,,,,,, 一一,一一一一,一,,,, ?阡吡吣?曲柚吣吣?吣吣??吣呻 阡幢??卸?????????? ?阡???如舯????仰帅??仰 ?????????吣??? 凹?盯盯???????????? 叽阡阡?帅帅?帅??帅??仰 黜毗阡阡??????????吣? m叭阡阡??加?????????限}圭扯扯啡 }ij阡?鲫如?们吣?仰?吣吣 吣阡????卸???????? ?阡??如曲????帅仰?仰 蚣此阡???舯鲫???????? m阡??.柚柚???????? 加?盯??卸??伽???仰帅 30救据采集与处理第0卷 偏移量宇段含义长度(字节) ? 上2CH环境块段址2 +2阻保留34 +50HINT21H,RETF指夸3 +53HDOS专用0 ? 上5CH存放格式化未打开的第一个FCB16 . 上6CH存放格式化未打开的第二个FCB16 +7cH保留d +8OH未格式化参数长度1 +8IH未格式化参数内容l27 地址0:OH {0IOH 50lOH 70:OH 012EOH 07E5OH 程序加载 起始地址 圈1pSI'结构框图 中断向量表(1KB) ROM-BIOS数据(256B) DOS使用参数(512B) DOS-BIOS模块 DOS—KERNEL模块 第一个DOS缓冲区 块设备部件参数块链 4DHl第一个MCB 可安装设备驱动器程序 第二组句柄文件控蜘块 DOS缓冲区 4DHl第二十MCB PsP COMMAND常驻部分 dDH1第三个McB COMMAND主环境 5AHl第四十McB 程序哲驻医(空冈块) COMMAND暂驻部分 图2PC机启动后的内存分配情况 lDOS内部模块 l系统篦置 DOS外壳常驻 J用户自由空间 l ' 口 口 第J期周军等:PC汇编语言编写菜单程序中可执行文件调用方法分析31 2与内存管理相关的DOS中断功能分析嘲 利用8086汇编语言编制的菜单程序,调用其他可执行文件,就需用到DOS中有关内存分 配,管理的功能,即INT21H中的48H,49H,4AH和4BH功能.48H,49H和4AH功能主要用于 分配内存块,释放已分配的内存块和修改已分配的内存块4BH功能是调用文件到内存中.在 此简要说一下有关4AH和4BH功能中的一些参数. (1)4AH功能是对已分配的内存块的大小进行修改. 入口:AH一4AH,INT21H中的4AH功能号 ES=BUF_ SEG需修改内存块的段地址 BX~SIZE;新申请分配的内存块的容量(节为单位) 在这里需要对Es中的入口参数值进行一下说明.由于DOS在调入一个可执行文件时,会 把这个文件在内存中的起始段地址(即PSP的段地址)赋给DS和Es寄存器,所以要在菜单程 序的起始部分把ES中的值保存起来,并在调用4AH功能时再赋给酷寄存器,这样就可达到 修改菜单程序存内存中占用空间大小的目的. 返回:c=0;成功 c=l;失败,这时AX一错误码, BX=最大可用空间 (2)4BH功能有三个子功能:0号子功能是装载一个程序并执行;1号子功能是装载一个 程序但并不执行,它是专门为DEBUG.COIV[保留的;3号子功能是从指定的内存地址装入程 序.在菜单程序中,主要是用0号子功能. 入口:AH一4BH;INT21H的4BH功能号 AL=0;4BH中的0号子功能 DS:DX;指向一个可执行文件路径名的段地址:偏移量 ES:BX;指向下一个参数块的段地址:偏移量 返回:c一0;成功 C一1;失败.这时AX一错误码 其中:0号子功能所要用到的参数块内容见附表.程序在调用这一子功能后,所有的内部寄存 器和DS,ES,SS段寄存器的内容都会丢失.故在使用这个功能前,为使在调用的可执行文件执 行完后退回的菜单程序能够继续执行,必需在这个功能使用前保存好这些寄存器的内容,并在 返回后及时恢复. 附寰0号子功能的装载参敷块内容 偏穆量内容 O,lH环境块段址(O为父进程环境块) 2,5H命夸行地址(PSP~-80H) 6,9H第一十FCB地址(PSP+5cH) A,DH第二十FCB地址(PSP+6C~i) 32数据采集与处理第g卷 3编程举例 根据上述分析,我们编制了一个调用可执行文件的程序实例,图3为这一程序的程序清 单.本程序在DOS3.30环境下,经编译连接后运行成功,它调用了在C:\ASM目录下的 PE2.EXE文件.在这个程序中,最主要的是在程序段的开始,在未更改ES段寄存器内害之前, 把ES中的值保存起来,该值作为调用INT21H的IAH功能时的一个入口参数. ~taeksegments~tekstack~澈置堆栈区I………………………… staedb10Ohdup(?)I1ePartolM~nue s衄ckends,………………………… moval1.0 cNegsegmentpubjda;设置数据区intI6h buraw??Dal,1bh p血na\m\pe2.exeJ,0jneexe pramdw0,6duo(0)ret erI町d~INT2lit:Efmr${………………………" dsegen血~Call~ecuteFile 1?''??…?'??'''???'???''???'?? esegsegmentpublic'oodeexe:rflOVhx,segpr~tm a鹫ume锱:cseg,dS:0seg,ss:sta吐 mentlpT0clarm0pTam[d],bx movax,stackI传送堆栈指针rflOVpT椰[8],bx movss."rflOVprmn[12].bx rr-ovsp,l00hlea",thn pushdsI保存ret指令返回时指针l曲h,pram subax,axcau— e*ec pushaxJm0next movax.dsegret movds,up movbuf,I保存PsP段地址{………………………… moves,ax{INT21H4BItSubroutine; :''''''''''''''''''''''''''''''4'''''''''''''''''''''''''''''' )M~lilyTheMemory?I修改内存块大小一cpr0cnear !…………………………savessdw? push髂~vespdw? rrvah.4ahDush吼 rr-oves.fpushds movbx,50h{新的内存块节数push int21hm0vcx.ss D.Pesm0Vcs:saVes宕'吼 jr-cnextnVcx,sp rnOvah,0ghrrvcs:savesp,c J髓血.eTr0rrr坤vah.4bh int21hrfl~va1.0 retint2lh next:rflovCx,cs:saveSs m0vSs,cx 在此可插入菜单的 控制,显示部分 判按键是否是"Esc" 不是,调用PE2.EXE 是,退回D0s 调用可执行文件 传送4BH0号子功能 的l人口参数 调用4BH0号子功参的 于程序 保存Ss值 保存SP值 '哥 叶 ' ? 第1期周军等:PC汇编语言编写菜单程序中可执行文件调用方法分析30 movcxt船}save~p,' movsp?':x popds poPcx jncexit movah.09h leadx,~fror int21h 嘶t:.? emer-dD ends 图3程序清单 参考文献 1张载鸿PC系列机系统开发与应用(上),北京:国防工业出版社1991179--191 2ThornHogan.PC软,硬件技术资料大全北京:清华大学出版牡,1990134一i37 TheAnalysisofCallingan aMPnuProgramby '. ,, Zht~uJ-mt ExecutableFile,whenCompiling 8086AssemblyLanguage ? ? YuSheldin (DeparUncmafieas~remefltEngineering.NUAANanjing.2l0016) AbstractUsing8086assemblylanguagetocompileame~tlprogram,itsneededtoexecuteanexe cutablefileunderloadingbythemenuprogram,andthenbacktothemenuprogram.Onthebaseof analysingthememorymanagementunder.theD0SenvironmentwiththeDOSsINT21Hfunction aboutthememorymanagement,wecaIlconcludethatbefoEeusingtheINT21H一 4BHfunction.theseg mentofPSPmustbekeptatthebeginingofthemenuprogram.andtheslzeofmemorythatthemenu programusedmusthemodifiedbyINT21H一 4AHfunctionwith[hepreservedPsPsegmentaddress.At theendof血 earticleanexampleprogramispresented.ThisprogramcanbeexecutedSucassf'Idlyunder theenvjronmentofD0S3.3D. keywords:programcontrol;assemblylanguage;microcomputers;memorycQr~tra3block 第一作者简升周军男.硬士生.1969年8月出生
/
本文档为【【doc】PC汇编语言编写菜单程序中可执行文件调用方法分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索