当前位置: 代码迷 >> 汇编语言 >> 标题: 在32位系统中 ds:eax 的算法解决方法
  详细解决方案

标题: 在32位系统中 ds:eax 的算法解决方法

热度:386   发布时间:2016-05-02 04:40:02.0
标题: 在32位系统中 ds:eax 的算法
描述: 看过王爽汇编书的人都知道 ds:ax 这种地址的算法,但产生这种算法的原因是地址线不够而产生了段的设计。但是现在32为系统中地址线已经够了,为何在VC调试程序或反汇编32位程序时候依然会产生上面格式的汇编代码,在这里应该怎么算?
------解决方案--------------------
严格来说,这个计算的不是物理地址,而是所谓的有效地址 EA ,这个有效地址在不同的 cpu 模式下含义是不一样的,即如真正的 8080/8086 类的 cpu 上,它确实是物理地址,但若是现在的那些 cpu 的 8086 虚拟模式下,也只是个该虚拟环境下的地址而已,不再是真正的物理地址了。
32 位环境下,段寄存器看到的是 16 位,但其实它只是个实际段描述内容的个索引;段的描述,包括了段的起始地址、长度、访问权限等诸多的信息,通过段的起始地址和偏移,可以得到所谓的线性地址,再进一步得到物理地址。有些复杂啊,真要具体了解,得看保护模式环境的系统程序设计方面的(不是应用程序设计);简单地,也可以搜索下段描述符、线性地址、物理地址之类的关键字,看看相关的粗略的说明。
  相关解决方案