鱼C论坛

 找回密码
 立即注册
查看: 3344|回复: 11

内存地址

[复制链接]
发表于 2012-7-12 19:10:58 | 显示全部楼层 |阅读模式
1鱼币
0x0012ff58 这是用vc++单步调试的时候,输入数组名得到的内存地址,请教一下是不是0012是段地址,ff58是偏移地址?

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-12 20:42:41 | 显示全部楼层
windows的地址不是按照8086的段地址加偏移的形式构成。
8086之所以会段地址加偏移的形式主要是要用两个16位寄存器表示20位地址。

Windows运行在32位下,不存在这种模式。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-12 20:59:02 | 显示全部楼层
单纯的淫哪。。。[0x12ff58]       这个是虚拟地址,要加上ds.base(若没有显示申明,默认的是ds)+0x12ff58 这才是线性地址,例如设address = ds.base+0x12ff58 .那么线性地址就是 address,然后通过分页机制,
分页机制这个过程还很复杂,若你想明白就要去学windows保护模式。最后计算出真正的物理地址。。。80X86的段地址*0x10 + 偏移纯粹是两个概念。。。。。。。。。。。。。。建议LZ还是不要去学80X86 汇编,耽误时间,学到了 什么用处都没有。。。对你学32位汇编 几乎不会有什么帮助,因为差别太大太大了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-12 21:55:37 | 显示全部楼层
小甲鱼,最近一直在学习你的教程,讲的很棒,第一次跟你真人互动,有点小兴奋:lol
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-12 22:51:05 | 显示全部楼层

那学WIN32 汇编可以吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-13 09:44:22 | 显示全部楼层

RE: 内存地址

Tzdner_C 发表于 2012-7-12 20:59
单纯的淫哪。。。[0x12ff58]       这个是虚拟地址,要加上ds.base(若没有显示申明,默认的是ds)+0x12ff58  ...

我倒是不觉得,8086汇编是一个基础,就连现在的cpu跟那时候的也差不是太多,而windows api只是一些提供给你的函数,就相当于是c语言和c++的区别,所以感觉汇编还是满重要的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-13 13:43:37 | 显示全部楼层
1144290241 发表于 2012-7-13 09:44
我倒是不觉得,8086汇编是一个基础,就连现在的cpu跟那时候的也差不是太多,而windows api只是一些提供给 ...

你学过80386汇编语言吗?懂80386以及以后CPU段寄存器吗?   懂windows的保护模式吗?    若没学过,就不要轻易下结论,,,我刚开始也是80X86入门的 然后学了windows保护模式,这一步步走过来的,所以想回头对新人说不要走弯路。。。  因为我学了80X86汇编语言对我几乎没有任何帮助。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-13 13:47:20 | 显示全部楼层
丿夏夜灬彬刂 发表于 2012-7-12 22:51
那学WIN32 汇编可以吗?

win32汇编刚开始学,有些困难。。。尤其是很多书刚开始首先是windows保护模式,分段分页机制,这个东西就直接能把人打晕。。。我觉得若是你不想在汇编上在底层有很大的造诣的话,只去学习指令就行,学会一些简单的指令然后能看懂VC的反汇编代码足以。。。若想更深当然必须懂保护模式,分段分页机制。。。但是80X86确实对你没有任何帮助。。。你学了估计连VC的反汇编还是看不懂。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-13 14:45:25 | 显示全部楼层
Tzdner_C 发表于 2012-7-13 13:47
win32汇编刚开始学,有些困难。。。尤其是很多书刚开始首先是windows保护模式,分段分页机制,这个东西就 ...

我学汇编主要就想在调试的时候用到 那就学win 32 汇编的 指令吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-13 21:26:43 | 显示全部楼层
Tzdner_C 发表于 2012-7-13 13:43
你学过80386汇编语言吗?懂80386以及以后CPU段寄存器吗?   懂windows的保护模式吗?    若没学过,就不要 ...

首先。我现在学习的确实是8086汇编。如果按照你说的,那么你直接学java就好了,为什么要学c语言呢???而实际上现在大部分学校都开设c语言(少部分pascal),这是为什么呢???java学到最后也是需要用c语言实现的,那么8086汇编与32位汇编不也是这个关系么???
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-14 15:24:57 | 显示全部楼层
1144290241 发表于 2012-7-13 21:26
首先。我现在学习的确实是8086汇编。如果按照你说的,那么你直接学java就好了,为什么要学c语言呢???而 ...

唉。。。那你好好学吧。。。当我没说。   还有不要用C语言跟java举例子,java号称c--,是因为java是没有指针的c。所以java有自己局限性,很多c能做的事情java做不了。。。。而汇编语言,是基于硬件的语言,很多东西是基于硬件的,指令集,尤其是CPU框架,结构,   举个例子,古代的马车跟现代的汽车。。。一个是有发动机的,一个是没有发动机的,唯一的共同点是都有轮子。但是有本质的区别。。。

当然你没学过我跟你说了也是白说。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-14 22:00:20 | 显示全部楼层
Tzdner_C 发表于 2012-7-14 15:24
唉。。。那你好好学吧。。。当我没说。   还有不要用C语言跟java举例子,java号称c--,是因为java是没有指 ...

好吧,多谢指教
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表