搜索
编程论坛
→
开发语言
→
『 汇编论坛 』
→ 问一下大家,内存中的偏移地址是可变的,通过偏移地址的改变来确定内存中这个段要访问什么地址,我这样理解对吗?
标题:
问一下大家,内存中的偏移地址是可变的,通过偏移地址的改变来确定内存中这个 ...
只看楼主
anann
等 级:
新手上路
帖 子:12
专家分:0
注 册:2015-6-15
楼主
问题点数:0 回复次数:8
问一下大家,内存中的偏移地址是可变的,通过偏移地址的改变来确定内存中这个段要访问什么地址,我这样理解对吗?
问一下大家,内存中的偏移地址是可变的,通过偏移地址的改变来确定内存中这个段要访问什么地址,我这样理解对吗?
2015-06-15 13:13
取名字
等 级:
贵宾
威 望:
21
帖 子:236
专家分:924
注 册:2015-4-27
第
2
楼
得分:0
只读内存ROM和随机内存RAM构成了内存空间,包含多个存储单元,每个存储单元都有一个唯一的编号,这就是存储单元的地址,可以看出,内存空间中并不存在偏移地址一说。
在程序中,为了数据的分类存放,程序的模块化,同时也因为16位汇编下寻址范围的限制,人为地将内存空间划分出段,如数据段,堆栈段,代码段等,编译时编译器会给段中的每条指令计算出一个地址,这个地址是相对段起始地址的一个偏移量,所以也叫偏移地址。
16位汇编下利用“段地址*16+偏移地址”定位要访问的存储单元。
2015-06-15 20:37
hu9jj
来 自:红土地
等 级:
贵宾
威 望:
396
帖 子:11713
专家分:43267
注 册:2006-5-13
第
3
楼
得分:0
偏移地址实际上是寻址操作中的概念,基址加偏移地址,得到最终的内存地址。
活到老,学到老! http://www. E-mail:hu-jj@
2015-06-16 06:49
anann
等 级:
新手上路
帖 子:12
专家分:0
注 册:2015-6-15
第
4
楼
得分:0
回复 2楼 取名字
那么这个偏移地址是和物理地址是由CPU给出什么地址来确定另一个地址的呢?
2015-06-16 14:13
取名字
等 级:
贵宾
威 望:
21
帖 子:236
专家分:924
注 册:2015-4-27
第
5
楼
得分:0
?
2015-06-16 14:22
anann
等 级:
新手上路
帖 子:12
专家分:0
注 册:2015-6-15
第
6
楼
得分:0
以下是引用
取名字
在2015-6-15 20:37:42的发言:
只读内存ROM和随机内存RAM构成了内存空间,包含多个存储单元,每个存储单元都有一个唯一的编号,这就是存储单元的地址,可以看出,内存空间中并不存在偏移地址一说。
在程序中,为了数据的分类存放,程序的模块化,同时也因为16位汇编下寻址范围的限制,人为地将内存空间划分出段,如数据段,堆栈段,代码段等,编译时编译器会给段中的每条指令计算出一个地址,这个地址是相对段起始地址的一个偏移量,所以也叫偏移地址。
16位汇编下利用“段地址*16+偏移地址”定位要访问的存储单元。
这个指令的地址是怎么计算出来的呢?是已知什么偏移地址来计算出物理地址吗,还有,具体是怎么计算出偏移地址的呢
2015-06-16 14:48
取名字
等 级:
贵宾
威 望:
21
帖 子:236
专家分:924
注 册:2015-4-27
第
7
楼
得分:0
偏移地址是编译器根据指令的长度计算出来的,如某段中第一条指令的偏移地址为0,这条指令的长度如果为3字节,则下一条指令的偏移地址为0+3(3)。
知道段地址和偏移地址之后,根据“段地址*16+偏移地址”计算出要访问的存储单元地址。如:
某段的段地址为0x164f,其中某条指令的偏移地址为0x0006,则该条指令的物理地址为:(0x164f)*(0x10)+(0x0006)=0x164f0+0x0006=0x164f6。其中0x10就是16。
2015-06-16 15:28
取名字
等 级:
贵宾
威 望:
21
帖 子:236
专家分:924
注 册:2015-4-27
第
8
楼
得分:0
段地址*16+偏移地址本身合成的就是20位的地址。
至于32位系统,在实模式下,寻址方式与上面相同。保护模式下寻址范围可以达到2的32次方,即4G。
32位系统下,除段寄存器外,其他寄存器都是32位,也就是说利用一个寄存器就可以寻址到4G,所以不用上面的方法寻址。
收到的鲜花
anann
于
2015-06-19 00:28
送鲜花
1朵 附言:我很赞同
2015-06-16 19:27
9
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-446610-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.356466 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved