|
|
|
→ 程序段前缀及其应用 |
|
程序段前缀PSP(Program Segment Prefix)是一个具有256个字节的信息区,是可执行文件(EXE和COM)所特有的,其内容在操作系统装入该文件运行时存入。
PSP信息区的字段分布如下表10.1所列。
表10.1 PSP信息区的字段分布表
| 偏移量 | 内容含义 | 偏移量 | 内容含义 |
| 00~01H | 程序结束指令中断20H | 2E~31H | 保留 |
| 02~03H | 分配给该程序的最后段的段地址 | 32~33H | 文件句柄表的长度 |
| 04~09H | 保留 | 34~37H | 指向文件句柄表的远指针 |
| 0A~0DH | 中断22H的地址(处理终止程序) | 38~4FH | 保留 |
| 0E~11H | 中断23H的地址(处理^Break) | 50~51H | 中断21H的功能调用 |
| 12~15H | 中断24H的地址(处理严重错误) | 52~5BH | 保留 |
| 16~17H | 保留 | 5C~6BH | 参数区1 |
| 18~2BH | 缺省的文件句柄表 | 6C~7FH | 参数区2 |
| 2C~2DH | 程序环境块的段地址 | 80~FFH | 存储缺省DTA的缓冲区 |
PSP信息区的字段说明:
|
◆18~2BH字段: |
该字段内共有20个字节,每个字节存储一个文件句柄,所以,系统允许应用程序在某一时刻最多只能打开20个文件。
前5个字节存储系统标准设备的句柄,可参阅8.3.6节——系统标准设备的句柄。 若某文件需要同时打开更多的文件,则需要调整文件句柄数。即:先用中断21H之功能4AH释放内存,再用其功能67H来设置新的文件句柄数。 MOV BX, NewNum ;新的文件句柄最大数(20~65535) |
| ◆ 2C~2DH字段: | 该字段存放程序运行环境的段地址,程序的缺省运行环境有160个字节,最多可达32K。该环境含有系统命令,如:COMSPEC、PATH、PROMPT和SET。 |
| ◆ 5C~6BH字段: | 该字段存放命令行的第一个参数。假设要执行下列命令: |
|
Masm D:test.asm |
|
|
这时,04H(驱动器D)、8个字符的文件名和3个字符的后缀存放在该区域,没有存放字符的单元用空格(20H)来填充。若省缺驱动器和文件名,则第一个字节为00H,其它单元为20H。 |
|
| ◆ 6C~7FH字段: | 该字段存放命令行的第二个参数。假设要执行下列命令: |
|
Masm D:test.asm, test.obj |
|
|
这时,test.obj作为第二参数存入该字段,存储方式如上字段。 |
|
| ◆ 80~FFH字段: | 该字段的第一个字节存放命令行参数的字符数,第二个字节为空格,从第三个字节开始存放命令行参数字符。 |