关于cpu分段的段地址计算

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 12:24   26   0

《微机原理》这本课程学过,不过后来我忘记了。今天复习的时候,作为学渣的我解了好大一个疑惑。


书上说,8086CPU有16位的数据总线和20位的地址总线。

所以,为了能让16位的cpu能够驱动20位的内存,采用了分段的形式。



原理和内容都在这里,不详细展开了


段寄存器-百度百科



分段的地址怎么计算呢:


我们知道段寄存器是16位的,16为的ip指针指向偏移量。

举个例子


段寄存器中的数值为: 2000H(16进制)

IP偏移量指针的指向: 1100H(16进行)


那么,cpu实际想指向的逻辑地址是多少呢?

书上一直讲,段寄存器后面补4个0+偏移量指针。

这里是16进制,所以后面补一个0。

所以结果是 2000H *10H + 1100H = 21100H


这个结果是什么意思呢?

意思是:

1.我们的偏移量是16位的数字,即范围是(0000H-FFFFH),这表示每一段的范围是2的16次方一共64K。

2.我们的段寄存器也是16为的数字,范围是(0000H-FFFFH),当它后面跟四个0之后,范围变成了(00000H --FFFF0H)。这个范围,就是端寄存器的表示的基地址的范围。


如果是0000H ,基地址就是00000H

如果是0001H, 基地址就是00010H


从00000H 到00010H之前的范围,就是每个分段的最小值,也就是说,最小的分段为2的4次方16B。

而最大范围就是偏移量IP的范围2的16次方,64KB。

3.我们可以以任何16B为最小度量,16B为整数倍的地址为基地址进行分段

原理和内容都在这里,不详细展开了
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP