鱼C论坛

 找回密码
 立即注册
查看: 4187|回复: 3

段地址到底是做什么的 ??有什么用啊?

[复制链接]
发表于 2011-4-15 15:49:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 loop 于 2011-4-17 04:55 编辑

看书看到段地址这里 怎么也不明白,段地址到底是做什么的,存在吗  还是虚构的?
不明白啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-15 16:16:42 | 显示全部楼层
我的理解是
内存可以分为很多段(只不过这些段cpu是不知道的)
我们认为定义的一些段
比如代码段 数据段等
假如一个内存空间1-100
0-10 我们自己定义为代码段  20-50定义为数据段
那么段地址就是我们定义的这个段的起始地址
比如1-10的代码段 那么起始地址为0,那么这个0就是个段地址,偏移地址就是从0-10进行移动
同样数据段 ds就是存放数据段起始地址20
不知道这样理解可不可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-16 12:10:58 | 显示全部楼层
首先,段地址是虚拟的。
8086cpu只有16位地址线,但需要传输20位地址线的数据, 这就需要通过一些方法解决
解决方法就是16位的偏移地址+段地址*16=内存地址
这里的段地址和偏移地址都是相对来说的
比如说100分的试卷,80分算优秀 ,分数再高点81,82.。。就很难考
这里8就相当于段地址,属于一个里程碑, 然后在这个基础上加的1到9之间的数就是偏移地址
8*10+2=82;  而为什么我们不直接说你考82,需要用这个复杂的方法呢
原因就是我要用个位的数去表示一个10位的数 , 这和8086的16位要表示20位是一个意思

评分

参与人数 1荣誉 +2 收起 理由
loop + 2 乐于助人

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-16 13:54:04 | 显示全部楼层
顶楼上!  8086之所以使用段+便宜来表示内存地址,原因是8086的寄存器是16位的,而地址线是20位,单一寄存器无法表示内存任意位置。所以就用两个寄存器嘛。

评分

参与人数 1荣誉 +2 收起 理由
loop + 2 我很赞同

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-29 02:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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