《微机原理》这本课程学过,不过后来我忘记了。今天复习的时候,作为学渣的我解了好大一个疑惑。
书上说,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)。这个范围,就是端寄存器的表示的基地址的范围。
<
本文介绍了8086CPU如何通过分段机制来处理16位数据总线和20位地址总线之间的差异。内容包括段寄存器与偏移量的关系,以及如何计算实际的逻辑地址。通过举例说明,段寄存器数值如2000H与IP偏移量1100H结合,形成21100H的逻辑地址,解释了段寄存器的基地址范围和分段大小的概念。
最低0.47元/天 解锁文章
3972

被折叠的 条评论
为什么被折叠?



