首页
社区
课程
招聘
[旧帖] [已解决]请教一个汇编的问题,很初级 0.00雪花
发表于: 2008-10-23 16:03 3927

[旧帖] [已解决]请教一个汇编的问题,很初级 0.00雪花

2008-10-23 16:03
3927


大家先看图,我debug名叫1.exe的这个程序

我这的汇编书上这样解释

DS中的值为14DF

那PSP就是14DF:0

那程序的地址就应该是14DF+10H:0

算出来也就是14EF:0嘛

教程中的示例确实也是这样,但我的机器就不是

我的程序入口如图是  14EF:01C0

我想知道为什么书上的偏移可以是0

而我的是1C0

我试了几个程序都这样

PS:我跟书上用的编译工具连接工具是不一样的

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
  • 1.JPG (43.32kb,65次下载)
收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
2
人家说的是PSP位于 DS:0
不是你说的 EP
2008-10-23 17:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
PSP是啥,偶更菜
2008-10-23 17:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
无论是COM还是EXE文件,DOS在调入它们时都要保留256字节来预置一些数据,我们把这256字节称为"程序段前缀"(PSP--Program Segment Prefix),对于一个"COM"文件,由于只有一个段,所以PSP、代码、数据和堆栈都在这个段中,PSP在头部,堆栈在尾部,中间是代码和数据,一个"COM"程序在调入内存执行时DOS会自动在堆栈中存入一个0,所以"COM"程序只需使用近程的RET指令就能返回DOS,并且无需自己初始化堆栈。

不懂问百度大叔= =
2008-10-23 17:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢回答
2008-10-23 17:48
0
雪    币: 442
活跃值: (43)
能力值: ( 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

以上,我哪里理解错了,或者根本就是问错了,还是其他的一些什么问题,比如系统啊

希望各位大侠能不吝赐教
2008-10-24 10:59
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我最终想知道的就是怎么通过这个PSP,得出EP

我按公式得出来的值根本就不是EP

我那个EP是靠自己手工一页一页翻出来的
2008-10-24 11:02
0
雪    币: 6092
活跃值: (654)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
8
赞一个,难得这么耐心和仔细,真的什么不懂再百度下,大家的回答也让我们长见识了。
2008-10-24 11:10
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
9
不行
PSP 跟 EP 無關
因为Compiler的关系你的EP并非绝对位于程序的第一行
2008-10-24 11:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
偶汇编忘干净了 准备重拾
2008-10-24 11:28
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
怪不得,我上面也说了我用的编译器跟书上用的不一样
2008-10-24 11:37
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
12
你的第一帖有说是一支 .exe   .exe的EP写在文件头的14h处(IP:CS)

除非你用类似masm写成 .com ' org 100h ' 最后end start (start为你所有程序的第一行)
你的公式才能成立
2008-10-24 11:49
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
从你贴的图上面看,你的EP确实是14EF:0000   0E      PUSH CS,你可以看看之后程序都做了那些工作,然后才跳到你写的代码。
2008-10-24 13:16
0
游客
登录 | 注册 方可回帖
返回
//