之前也知道只是没有去细想,如今一细想更好的理解了一下。
都知道8086的寄存器是16位的,也就是 只能寻址 64K(64k=2^16),但是却有20根地址线,那要肿么办呢。
于是就想出了一个分段寻址的方法,也就是 段基址+偏移量,其中段基址和偏移量都是16位的,但是在计算地址的时候,
将段基址左移4位,然后在加上偏移量,这样就20位了。每一段根据偏移量来看,就是64k。
但是,今天一想,这样做的话会有重复的情况啊,也就是不同的段基址和偏移量加起来,可能会对应同样的一个地址,
而且还会有溢出啊,比如段基址是0xFFFF,偏移量是0xFFFF,这样不就超出了么。
然后查了下,在维基百科中有这么一段:http://zh.wikipedia.org/wiki/Intel_8086
086有4个存储器区段(segment)暂存器,可以通过索引暂存器来设置。区段暂存器可以让CPU一种当时是全新的方式访问多达1MB之存储器