找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3460|回复: 0

DOS程序PSP头的结构

[复制链接]

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24221 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2014-1-27 20:38:42 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
PSP头是DOS的16位程序都要用到的数据块,总共占用256字节,作用是帮助程序访问基本的DOS功能。
COM程序的org 256(org 0x100、org 100h)之所以设置其实前面的保留块


www.ctyme.com拿下来直译过来的,不保证大家能看懂

偏移  长度      描述
0x00  2    BYTEs  INT 0x20指令
0x02  2    WORD  分配给程序的第一个段
0x04  1    BYTE  DOS:未使用,OS/2:假的DOS版本返回数
0x05  1    BYTE  CP/M:CALL 5服务请求(远调用到绝对地址0x00C0)
0x06  2    WORD  CP/M:兼容性--.COM文件第一个段的大小
0x08  2    BYTEs  剩下的远跳转到0x05
0x0A  4    DWORD  存储的INT 0x22终止地址
0x0E  4    DWORD  存储的INT 0x23控制中断处理地址
0x12  4    DWORD  DOS 1.1+:存储的INT 24关键性异常处理地址
0x16  2    WORD  父PSP段
0x18  20   BYTEs  DOS 2+:正在操作的文件表,每个文件句柄占1字节, FFh = 已关闭
0x2C  2    WORD  DOS 2+:环境变量的段
0x2E  4    DWORD  DOS 2+:最后的INT 21调用后的程序的SS:SP
0x32  2    WORD  DOS 3+:正在操作的文件表项数(默认20)
0x34  4    DWORD  DOS 3+:正在操作的文件表的地址(默认PSP:0018h)
0x38  4    DWORD  DOS 3+:上一个PSP的指针(默认FFFFFFFFh在3.x版本的DOS)用于DOS 3.3的SHARE
0x3C  1    BYTE  DOS 4+:(DBCS)中期控制台标识(见AX=6301h)Novell DOS 7 DBCS中期标识在AX=6301h这里设置(可能同样被Far East MS-DOS 3.2-3.3使用)
0x3D  1    BYTE  (APPEND)TrueName标识(see INT 0x2F/AX=0xB711)
0x3F  1    BYTE  (Novell NetWare) Novell 任务数,如果上个字节是CEh
0x40  2    BYTEs  DOS 5+ INT 21/AH=30h返回的版本号
0x42  2    WORD  (MSWindows3)链表中的下一个PSP (PDB)的选择子。Windows有一个链表,只用于Windows程序
0x44  2    WORD  (MSWindows3) "PDB_Partition"
0x46  2    WORD  (MSWindows3) "PDB_NextPDB"
0x48  1    BYTE  (MSWindows3) 如果位0设置了,那么这不是一个Windows应用程序(WINOLDAP)
0x49  1    BYTE  对于DOS版本<= 6.00的,未使用
0x4C  2    WORD  (MSWindows3) "PDB_EntryStack"
0x4E  2    BYTEs  对于DOS版本<= 6.00的,未使用
0x50  3    BYTEs  DOS 2+ 服务请求(INT 21/RETF指令)
0x53  2    BYTEs  对于DOS版本<= 6.00的,未使用
0x55  7    BYTEs  对于DOS版本<= 6.00的,未使用;能用于制作第一个FCB到扩展的FCB
0x5C  16   BYTEs  第一个默认的FCB,从第一个命令行参数填充覆盖第二个FCB,如果打开了文件。
0x6C  16   BYTEs  第二个默认的FCB,从第二个命令行参数填充覆盖开始的命令行,如果打开了文件。
0x7C  4    BYTEs  未使用
0x80  128   BYTEs  命令行或默认的DTA命令尾是BYTE用于尾巴的长度, N BYTEs用于尾巴,在包含了0Dh字节的后面

回复

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-19 06:28 , Processed in 0.041713 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表