首页
社区
课程
招聘
[旧帖] [求助]段地址:必须被16整除? 0.00雪花
发表于: 2008-9-28 02:17 4895

[旧帖] [求助]段地址:必须被16整除? 0.00雪花

2008-9-28 02:17
4895
学汇编才几天了     很郁闷 在这搞不定了
   段地址为什么必须能被16整除啊 ···
    这个问题的确很弱智  可很抱歉我还是不懂  
     哪个高手帮帮忙  讲详细点   感激不尽

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
一个CPU能够直接操作的内存容量是它的一个重要的性能指标,这个指标取决于CPU芯片的地址信号线的位数。8086有20根地址线,寻址空间可达1M,寄存器只有16位,怎么在16位的机器里表示20位的地址呢?于是就采用了存储器地址分段的办法。

内存地址(物理地址 PA)是通过把一个16位数据(段地址 SA)左移4位(也就是乘以16)再加上一个16位数据(偏移地址 EA)得到的。

PA = SA * 16 + EA

举个例子,2个不同的逻辑地址其实是一个物理地址:
1CBEE = 10FA:BC4E = 1800:4BEE
2008-9-28 04:38
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
还是有点晕!不过还是谢谢icersg!

支持看雪!

先死记住吧!  物理地址=段地址*16+偏移地址

            PA = SA * 16 + EA
2008-9-29 08:02
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个问题其实不是很重要,没弄懂也不怎么影响逆向分析.
现在反汇编的代码,地址都是直接用8位16进制数表示了,
如:00401000   push ebp
也就是说,每个进程都有独立的4G寻址空间(理论上).
2008-9-29 10:42
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
其实很好理解啊,举个例子。

-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B5D  ES=0B5D  SS=0B5D  CS=0B5D  IP=0100   NV UP EI PL NZ NA PO NC
0B5D:0100 730B          JNB     010D

这里的CS就是段地址,IP就是偏移地址。
CS的值是0B5D,但是他表示的物理地址是0B5D0,上面说的段地址能被16整除指的是0B5D0,而不是CS里面的0B5D
2008-9-29 12:40
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢icersg!
            听你说清晰许多了
                    看学真的卧虎藏龙啊!
2008-9-30 03:22
0
游客
登录 | 注册 方可回帖
返回
//