第1个回答 2010-11-07
一般来说,PSP是256个字节,当程度生成了可执行文件以后,在执行的时候,先将程序调入内存,这个时候DS中存入程序在内存中的段地址,紧接着是程序的一些说明,比如说程序占用多大空间等等,这就是PSP,一般PSP占256个字节,然后才是真正的程序地址,将CS指向这里,IP设为0000,为什么一般CS要比DS大10H,就是因为这个原因,简单说:DS存放的是程序段地址,由于PSP的存在,真正要执行的地址是DS再加上256个字节,真正的地址是DS*16+256化简一下:DS*16+0+16*16=16*(DS+16)真正的地址又可以写成:cs*16+0
所以CS相当于DS+16,化成十六制是DS+10本回答被提问者和网友采纳
第2个回答 2010-11-06
段前缀是操作系统在执行程序时为程序所建立的一个信息块, 里面包括了传递给待运行程序的命令行参数, 程序运行结束时返回DOS所需的地址等有用的信息.
COM格式比较特殊,数据段,代码段,堆栈段集中在一个段里,连PSP也集中在这个段里, 于是段的前100H就用来存放PSP了.
EXE文件在运行时DS/ES的初值设为PSP的段地址,可以直接用偏移0-100H访问PSP的内容。