zfzhuman123 发表于 2011-4-15 15:49:21

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

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

看书看到段地址这里 怎么也不明白,段地址到底是做什么的,存在吗还是虚构的?
不明白啊!

itddy 发表于 2011-4-15 16:16:42

我的理解是
内存可以分为很多段(只不过这些段cpu是不知道的)
我们认为定义的一些段
比如代码段 数据段等
假如一个内存空间1-100
0-10 我们自己定义为代码段20-50定义为数据段
那么段地址就是我们定义的这个段的起始地址
比如1-10的代码段 那么起始地址为0,那么这个0就是个段地址,偏移地址就是从0-10进行移动
同样数据段 ds就是存放数据段起始地址20
不知道这样理解可不可以

kithon 发表于 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位是一个意思

china0008 发表于 2011-4-16 13:54:04

顶楼上!8086之所以使用段+便宜来表示内存地址,原因是8086的寄存器是16位的,而地址线是20位,单一寄存器无法表示内存任意位置。所以就用两个寄存器嘛。
页: [1]
查看完整版本: 段地址到底是做什么的 ??有什么用啊?