| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5406 人关注过本帖
标题:问一下大家,内存中的偏移地址是可变的,通过偏移地址的改变来确定内存中这个 ...
只看楼主 加入收藏
anann
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-6-15
收藏
 问题点数:0 回复次数:8 
问一下大家,内存中的偏移地址是可变的,通过偏移地址的改变来确定内存中这个段要访问什么地址,我这样理解对吗?
问一下大家,内存中的偏移地址是可变的,通过偏移地址的改变来确定内存中这个段要访问什么地址,我这样理解对吗?
2015-06-15 13:13
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
只读内存ROM和随机内存RAM构成了内存空间,包含多个存储单元,每个存储单元都有一个唯一的编号,这就是存储单元的地址,可以看出,内存空间中并不存在偏移地址一说。
在程序中,为了数据的分类存放,程序的模块化,同时也因为16位汇编下寻址范围的限制,人为地将内存空间划分出段,如数据段,堆栈段,代码段等,编译时编译器会给段中的每条指令计算出一个地址,这个地址是相对段起始地址的一个偏移量,所以也叫偏移地址。
16位汇编下利用“段地址*16+偏移地址”定位要访问的存储单元。
2015-06-15 20:37
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11773
专家分:43421
注 册:2006-5-13
收藏
得分:0 
偏移地址实际上是寻址操作中的概念,基址加偏移地址,得到最终的内存地址。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-06-16 06:49
anann
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-6-15
收藏
得分:0 
回复 2楼 取名字
那么这个偏移地址是和物理地址是由CPU给出什么地址来确定另一个地址的呢?
2015-06-16 14:13
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
2015-06-16 14:22
anann
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2015-6-15
收藏
得分:0 
以下是引用取名字在2015-6-15 20:37:42的发言:

只读内存ROM和随机内存RAM构成了内存空间,包含多个存储单元,每个存储单元都有一个唯一的编号,这就是存储单元的地址,可以看出,内存空间中并不存在偏移地址一说。
在程序中,为了数据的分类存放,程序的模块化,同时也因为16位汇编下寻址范围的限制,人为地将内存空间划分出段,如数据段,堆栈段,代码段等,编译时编译器会给段中的每条指令计算出一个地址,这个地址是相对段起始地址的一个偏移量,所以也叫偏移地址。
16位汇编下利用“段地址*16+偏移地址”定位要访问的存储单元。

这个指令的地址是怎么计算出来的呢?是已知什么偏移地址来计算出物理地址吗,还有,具体是怎么计算出偏移地址的呢
2015-06-16 14:48
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
偏移地址是编译器根据指令的长度计算出来的,如某段中第一条指令的偏移地址为0,这条指令的长度如果为3字节,则下一条指令的偏移地址为0+3(3)。
知道段地址和偏移地址之后,根据“段地址*16+偏移地址”计算出要访问的存储单元地址。如:
某段的段地址为0x164f,其中某条指令的偏移地址为0x0006,则该条指令的物理地址为:(0x164f)*(0x10)+(0x0006)=0x164f0+0x0006=0x164f6。其中0x10就是16。
2015-06-16 15:28
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
段地址*16+偏移地址本身合成的就是20位的地址。
至于32位系统,在实模式下,寻址方式与上面相同。保护模式下寻址范围可以达到2的32次方,即4G。
32位系统下,除段寄存器外,其他寄存器都是32位,也就是说利用一个寄存器就可以寻址到4G,所以不用上面的方法寻址。
收到的鲜花
  • anann2015-06-19 00:28 送鲜花  1朵   附言:我很赞同
2015-06-16 19:27
快速回复:问一下大家,内存中的偏移地址是可变的,通过偏移地址的改变来确定内存中 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017914 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved