EXE文件中的程序的加载过程 SA是什么呢?PSP是什么?

精华解读:https://zhidao.baidu.com/question/195901151.html

段地址SA,默认在DS中!

查看PSP命令:

-d ds:0

一般来说,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

自己的人话版解读:

王爽老师汇编语言书里面的截图:

SA的介绍:

无论是书本,还是搞这个的老哥们。都意思如下:

 只需要知道第一步,程序地址=SA * 16 + 256,即可。

PSP是什么呢?

书上也说啦。就是取出段内存区的前面256个字节。用来与被加载程序通信。

虽然是废话,但是在此作为一个烂笔头的存在好啦~

关于程序物理地址: SA+10H:0

出现过程:

首先PSP的物理地址:SA*16+0;再补上预留给PSP的256个字节(即是:100H)。

故而:      (SA*16+0)+256

                  =(SA+16)*16+0

化为16进制=(SA+10H):0

 

猜你喜欢

转载自blog.csdn.net/weixin_42859280/article/details/107614083