问题标题:
【关于物理地址中段的意思?地址10000H~100FFH的内存单元组成一个段,该段的起始地址为10000H,段地址为1000H,大小为100H.,为什么段地址比起始地址少了一个零?大小为100H又是什么意思呢?再如:数据在】
问题描述:

关于物理地址中段的意思?

地址10000H~100FFH的内存单元组成一个段,该段的起始地址为10000H,段地址为1000H,大小为100H.

,为什么段地址比起始地址少了一个零?大小为100H又是什么意思呢?

再如:数据在内存2000:1F60单元中表示“数据在内存21F60单元中”.为什么不是在3F60单元中?

刘中原回答:
  我下面的话请你调用你的排列组合数学能力和小学学过的基本数数方法去理解.   ①首先,本来,应该按你所说的,物理地址就是一个平坦读写和运算的过程,但是:【总线之间一次能传输的数据是有限的,寄存器一次能存取的数据范围也是有限的】   ②你现在肯定知道2位bits能表达2^2=4种基本信息(就相当于4个地址),2^5=256(5位bits能表达256个地址).   ③在很久很久以前,寄存器不是32位的,而是16位的(现在寄存器都是32位的,甚至64位,总线一次传输位也很大能满足寻址需求,那么就不存在什么段不段的问题).   ④16位的寄存器能寻址空间是多少?你肯定也知道:2^16个地址,每4位二进制能和一个十六进制对应,也就是4个十六进制位的自由寻址空间.   ⑤但是你也看到了,实际上内存地址个数超出了4个十六进制位能表达的范围,已经是5位十六进制了.就相当于,你想用只能写0~100这些数的纸条分别区别的标记1000个房子,是不可能的.但是你能用两个纸条拼起来标记这1000个房子.   ⑥其实那时候地址总线是20位bits的,每4bits对应1个十六进制数,20/4=5恰好能寻址5位十六进制,但是16位bits的寄存器不能一次存一个地址,那怎么办呢?把两个寄存器连起来,不就可以了吗?   ⑦于是,问题变得很简单,把所有地址分为不同的段,段地址的值不是真实的值,但是实际上段的起始地址=段地址x16d也就是向左移动了一位十六进制位,这一位是0H,这0H加上剩下的低位地址,拼接成了完整的物理地址.   ⑧不同硬件和操作系统下,段的大小是不一样的,有的是16kilobytes有的是256bytes,你说的是100H,也就是256bytes.每个段大小越小,段的个数越多,段的个数x段大小>=整个内存地址,只有这样才能满足物理地址的需求.   ⑨以上内容应该能解释你的“段地址什么意思”,“段地址比起始地址少了一个零”,“大小为100H什么意思”
查看更多
数学推荐
热门数学推荐