能力值:
( LV9,RANK:180 )
|
-
-
2 楼
人家说的是PSP位于 DS:0
不是你说的 EP
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
PSP是啥,偶更菜
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
无论是COM还是EXE文件,DOS在调入它们时都要保留256字节来预置一些数据,我们把这256字节称为"程序段前缀"(PSP--Program Segment Prefix),对于一个"COM"文件,由于只有一个段,所以PSP、代码、数据和堆栈都在这个段中,PSP在头部,堆栈在尾部,中间是代码和数据,一个"COM"程序在调入内存执行时DOS会自动在堆栈中存入一个0,所以"COM"程序只需使用近程的RET指令就能返回DOS,并且无需自己初始化堆栈。
不懂问百度大叔= =
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
谢谢回答
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
首先
PSP是一段地址对吧,256字节
PSP的起始位置是不是被放入了DS,也就是DS:0
PSP完了就接着程序对吧
PSP大小我们知道了,起始位置又知道了,那是不是可以通过PSP得出EP呢
这条公式就是 DS+10H:0
对不对,这些是我的理解,不对的地方麻烦指正一下,谢谢了 然后
大家看图,我的DS中数据是多少 14DF
套用之前的公式,那程序的EP是不是应该为
14DF+10H:0=14EF:0 最后
实际通过我的搜索,程序的EP为14EF:01C0
也就是图中的代码,而书上的都是14EF:0 以上,我哪里理解错了,或者根本就是问错了,还是其他的一些什么问题,比如系统啊
希望各位大侠能不吝赐教
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我最终想知道的就是怎么通过这个PSP,得出EP
我按公式得出来的值根本就不是EP
我那个EP是靠自己手工一页一页翻出来的
|
能力值:
( LV4,RANK:45 )
|
-
-
8 楼
赞一个,难得这么耐心和仔细,真的什么不懂再百度下,大家的回答也让我们长见识了。
|
能力值:
( LV9,RANK:180 )
|
-
-
9 楼
不行
PSP 跟 EP 無關
因为Compiler的关系你的EP并非绝对位于程序的第一行
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
偶汇编忘干净了 准备重拾
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
怪不得,我上面也说了我用的编译器跟书上用的不一样
|
能力值:
( LV9,RANK:180 )
|
-
-
12 楼
你的第一帖有说是一支 .exe .exe的EP写在文件头的14h处(IP:CS)
除非你用类似masm写成 .com ' org 100h ' 最后end start (start为你所有程序的第一行)
你的公式才能成立
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
从你贴的图上面看,你的EP确实是14EF:0000 0E PUSH CS,你可以看看之后程序都做了那些工作,然后才跳到你写的代码。
|
|
|