首页 [doc] 程序段前缀PSP及应用

[doc] 程序段前缀PSP及应用

举报
开通vip

[doc] 程序段前缀PSP及应用[doc] 程序段前缀PSP及应用 程序段前缀PSP及应用 MOVAX,~4DBA) M0VSP.AX S1 JMPn188 NOP NOP NoP NOP N0P M0VAX.[4DB4. ~ ADDAX.DX PUSHF;压入标志 PUSHAXI压AIP M0VAX.E4DB2] ,kCS PUSHAX:压 M0VAX.ES ADDAX.004o M0VES.AX MOVDI,0000 MOVSI,0200 M0VCX.O1OO REPZ MOVSB MOVCX...

[doc] 程序段前缀PSP及应用
[doc] 程序段前缀PSP及应用 程序段前缀PSP及应用 MOVAX,~4DBA) M0VSP.AX S1 JMPn188 NOP NOP NoP NOP N0P M0VAX.[4DB4. ~ ADDAX.DX PUSHF;压入标志 PUSHAXI压AIP M0VAX.E4DB2] ,kCS PUSHAX:压 M0VAX.ES ADDAX.004o M0VES.AX MOVDI,0000 MOVSI,0200 M0VCX.O1OO REPZ MOVSB MOVCX.DS CMPCX.1FB1 JGE0IDD MOVAX,IFBI SUBAX.CX SBO010].AX ES. S!]B~0016].AX ES. SUB[0O2C].AX ES. SUBE00302.AX ES. SUB~0036].AX JMP01FF SUBCX.1ibi F_S. ADD[000C].CX E. ADDeOOi0].CX ES. ADDCOOl6].CX ES. ADDC0o2C].CX Es. ADD[003O】.CX ES. ADD[.036】.CX IRET中断返回,弹出cs: IP和标志,控制权交给 SendI-exe 程序段前缀PSP及应用 西北工业六学计算机软件教研宣陈镐缨 在一般的程序设计中都不需要清楚程序 段前缀的结构.但是,如果你能够掌握程序段 前缀的结构,并且能够灵活地运用它,则你 开发的软件水平必然会大大地提高一步. 一, P$P结构 DOS在每次装载程序时,都要分配出 256(100H)字节的空间建立该程序的程序段 前缀.尽管PSP占用了DOS分配给用户程序 的前256字节,PSP与程序代码不一定在同 一 个段.下面详细介绍它的各个域的内 容: ? INT20I-I(偏移OH,2字节) 此域包含了一个程序终止,返回揉作系 统的机器指 ? 占用内存顶端段地址(偏移2I-I,2字 节) ?38? 这里存放DOS分配给用户程序的内存空 间顶端的段地址,故从此地址偏移0处的字 节便是自由空间的第一个字节.对于一般程 序,由于DOS将所有的自由空间都分配给用 户程序,故此值常常等于系统的RAM配置 量(如640KB,512KB等)o显然,将此域 的值减去PSP的段地址便是用户程序实际占 用的内存空间. ? DOS服务功能长调用指令(偏移5H, 5字节> 这里存放着D0s服务功能长调用指令的 机器码,第一个字节是长调用CALL的指令 码9AI-I,后四个字节是INT21H的入口地 址.在程序中你可以设置好入口参数后向此 域地址做一个段内调用即可完成一次DOSN 务功能的调用注意,这种方法仅对功能号小 手等于24If1]~IDOS服务功能自效.证用户 序中一般还是以直接做INT21H操作为好. ? 程序结束,Ctrl-Break,错误处理 地址保存(偏移AH,4x3字节) 这里包括了PSP的三个域.当DOS装载 用户程序时,便分别将此时刻的]NT22H, INT23H和INT24H的中断向量保存在这三 个域中. ?父程序的PSP段地址(偏移16H,2字 节) 父程序是嵌套执行本程序的程序.它可 以是任何可运行程序. ? FHT(偏移18H,20字节) FHT是File-handletable(文件句柄表) 的缩写.FHT中可以存放2O个文件句柄,因 此,在用户程序中同时打开的文件不能超过 20个.由于系统内部本身要占用5个文件, 所以实环留给用户的文件最多只有15个. ? 程序环境块段地址(偏移2CH,2字 节) DOS给每个加载的程序都要建立一个程 序环境块.通过这个域可以访问程序环境 块. ?DOS棱保存域(偏移2EH,4字节) 用户程序调用DOS功能服务程序时, DOS将用户程序的栈段地址和指针保存在此 域.不允许对这些数据进行任何修改. ? FHT长度(偏移32H,2字节) 这个域存放FHT的长度,以文件句柄数 为单位.换言之,这就是用户程序可处理文 件的最大数目,遥常它的值为2O.可以修改 此值,使它大于2O.但是,这时也必须重新 建立FI4T,使它足以容纳所有的文件柄. ? FHT地址(偏移34H,4字节) 此域存放FHT的地址.当你希望建立自 己的FHT时,必须修改此域的值.? ? INT2IH~FIRETF(偏移50H,3字节) 这个域包含了两条指令码INT21H和 RETF,供调用DOS服务功能之用. ?文件控制块(偏移55H,43字节) 造里包括了FCB1Ext,FCBl,FCB2, Ext和FCB2四个PSP域.山子新版本的DOS 引八了更为方便的文件句柄式文件操作方 法,所以一般可不使用这几个域. ? 命令行参数长度域(偏移80I{,1字 节)甜命令行参数域(偏移81H,127字节) 当DOs装八用户程序时,便将整个命令 行参数保存在这个域,并且将其总长度存放 在命令行参数长度域.因此,可以很容易地取 得命令行参数. ?DTA域(偏移80H,128字节) DTA是DiskTransferArea蜘盘传送 区)的缩写.注意,DTA域与命令行域共用 同一内存区域,所以如果需要gI用命令行参 数,就必须在进行磁盘操作之前首先将命令 行叁数保存起来. :,PSP数据的利用 在程序中利用PSP数据首先应当解决的 问题有两点;确定PSP的地址和正确截取 PSP各域的数据. 本文以TURBOPASCAL为描述工具说 】霉6匹 m P咖:?? LeQ:bte: Li:.1.10F0; 一个结构类型常量PreFixS— eg可供你直接引用,它的傻就是PSP的段地 址. 为了能正确而又方便地截取PSP的各域 数据,较好的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 是定义一个记录类型,这 个记录的域与PSP中的域有一一对应的关 系.为使用方便起见,这里将这个记录定义 在单元PSPU中,并且说明一个对应类型的 变量PSP供你直接引用. 三,PSP的应用 下面介绍PSP的几种重要的应用. (1)计算程序内存空间占用量 当DOS为程序分配内存并建立它的PSP 时,起始地址均位于节边界(每16字节为一 个节),即段起始地址.所以,DOS为程序 分配的内存量总是大于编译程序报告的量. 根据PSP中”占用内存顶端段地址域的数据 与PreFixSeg,容易求出系统实际分配结程 序的空间字节量: (PSPA.TopOfDOS-PrePixSeg)*I6.0 (2)截取命令行参数 虽然TURBOPASCAL已提供了两个有 关命令行参数的标准过程ParamCount和Pa- ramStr,通过它们可以十分方便地得到每一 个命令行参数内容及参数总的数目.但是, 如果需要得到一个完整的命令行参数字符 串,你可以通过访问PSP相应的域获得.? (3>暂时退出程序的方法 在近些年来开发的许多高级软件中都有 这个功能.用户利用软件的这个功能,可以 暂对中止正在进行的工作,进八操作系统进 行一些其它的操作.当完成这些操作后键八 DOS系统命令EXIT便可立即返回软件继续 进行方才中止的工作.通过这样的设计可以 给用户带来极大的方便和使用上的灵活性. 实现这一功能,事实上是嵌套运行了DOS的 命令处理程序COMMAND.COM.这就产生 了一个问题}当要暂时进八DOS系统时,程 序应该到何处读取COMMAND.COM文件? ?4O? 一 个好的软件应当能够适应在各种环境下运 牙,匿此,一般不应规定用户必须将某个文件 存放在哪个将定的驱动器或目录中.事安 上,这个文件的完整的路径名在文件的环境 块中可以找到.因此,借助于PSP这/卜问题 就可以得到圆满解决. 四,增加系统的文件处理数量 MS-DOS操作系统规定在任何时候,一 个进程可同时打开的文件数量最多不得超过 20个.由于系统内部本身就至少占用了5个, 所以用户程序中可同时处理的文停数目一般 不得超过15个虽然这个数量完垒可以满足 绝大多数用户的需要,但是,在开发某些高 级软件,特别是大型程序时,这个限制就显 得过于苛刻. 0]l: P: ?豁r ;~xFil笛=40;[琏多可打开4o十文件) 铋 g.,FIIcY~IQ:批..-自|l皓】OF岛:{*硼裹I f:肌5.~Filesj肾T雠t: 01?:{n,: 01}?”leSfze: st{Sta”: i:le~-d ?日)慨EBfIleTab!e: B?iH fP’? BE6州 FiIIFRar扯lSi姗岫F{l曲le).巧5》;(tIFIII”~拍埘 0【鼬铀kl蚰嚼;【撮薛刚加地址) O?j|.n‰bI曲l;【保存长窿) P,ffahlze_II’a~il?:(础t匍商窿1 ?abI”耐re嚣::9hFj1eT址{瘦置|ifH1吨J 妇’leilmOlCg,”ra,~le蛐劫:耶聃喜 ? B; 蛔姗州触;嘴望触喇庄对茁种船】 几日陪吣 艟G R口mkM【0埘: 踟?lf’oiHr曲l{} ttdel~ef[rdl~ble.托}dl埘20); D: 呻; 蜮? E,meedFjleTI iteln【.曲6’t}blJ咎.FII,~); 嘟f:口.h?健饕打开薜陴] ?【H sIi.StI 舡5jLf【j.st): Re~ite【ffI.I. ?; itek~【垴fto(kto6.’lbi】酷.c.pmf{les.) mi?,I?iIn【r『|1li):『对十文件连抒写?作) ireIn1’%础ykclo6.’.Ij:?enIiJ}: P强:《13l唱?CI~(f:I哺有盘 e垫曲 日旺 PC设备驱动程序的格式及安装方法分析 华东工学院计算机科学与工程系张宏刘凤玉 在PC机的应用领域中,用户有时需要 配置非标准的外部设备或伪设备.DOS系统 允许用户为所加的外设提供自己开发的驱动 程序(作为DOS的一部分),从而使所加的 外设可同标准设备一样方便地使用.目前关 于外设驱动程序的安装方法已有许多资科介 绍,但许多用户仍感到有一定的困难,主要 是不能正确理解设备驱动程序格式的规定. 由于工作的需要,我们曾对PC—DOS(3.0 版)进行了详细分析,本文结合DOS对此部 分的处理简单地介绍驱动程序的结构及安装 方法. 一 ,驱劝程序的格式与使甩 驱动程序的开发一般以汇编语言为工 具,用户可以按照COM文件的格式写出驱 动程序.但一般的COM格式文件有定位语 句ORG100H,在驱动程序中,定位语句应 是ORG0.另外,一般的COM文件要求第一 个语句是可执行语句,而驱动程序中要求以 一 张表开始,此表称设备头,其格式如下 事实上,DOS操作对一个进程同时打开 的文件数目可以多达255个.之所以一般被 控制在2O个,完全是由于文件旬柄表FHT长 度的限制.因此,如果你建立一个足够大的 FHT,并且修改相关的PSP域,就可以突破 系统的这一限制. FHT共有20字节,它的某一字节为FFH 时表示空项,否则对应一个打开的文件.以 下是增加系统的文件处理数量操作的步骤: ?为新的FJFIT定义一个变量,为程序运 行结束时恢复原先的环境,再定义两个变量 用于保存PSP~b躁FHT地址和长度 下一个设备头指针 设备属性字 设备策略指针 设备中断指针 名字/装置数段 双字 1r? 字 皇 皇 8字节 下一个设备头指针给出了另一个设备驱 动部分的设备头位置,在一个扩展部为COM 的设备驱动程序中可以开发几个设备驱动部 分,各设备的设备头通过该指针域相链接, 最后一个设备头该指针域是一1. 属性部分给出了外设的属性,如是块设 备还是字符设备,有甭提供输八/出控制 (ioCTL)及其它一些信息. 设备策略指针和设备中断指针是外设驱 动程序中两个程序的人口,此处提供了与 DOS的接口. 名字/装置数段,对字符设备是名字 ?用FFH初始化新FI-1T(FFH表示未用 过). ?保存PSP中FJFIT的地址和长度. ?修改PsP中FHT地址域和长度域 ?将原FHT的数据恢复到新FHT中. 应当注意,虽然你在程序中可以对DOS 系统的打开文件数目限制进行修改,但是这 有一个前题不能忘记:在系统启动之前,系 统配置文件CONFIG.SYS中必须设置: FILES=n 这里的n是你扩充系统功能后允许打开文件 的最大数目.下面给出一个示范程序(见40 两右栏). -41-
本文档为【[doc] 程序段前缀PSP及应用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_083599
暂无简介~
格式:doc
大小:31KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-11-09
浏览量:31