段:偏移寻址方案如何工作?

时间:2012-01-01 19:23:03

标签: x86

我已经读到,在英特尔8086 CPU的时代,最大的寄存器是16位,每个人都在寻找一种方法来访问超过65536字节的线性内存,但不是扩展CPU寄存器而是发明了段:偏移寻址方案和我理解它的方式你能够将两个16位寄存器“组合”成一个32位的存储器地址。但同样的地方我也读到CPU只能访问1MB的内存。这是如何运作的? 2 ^ 32等于4,294,967,296所以我不明白,请赐教:))

3 个答案:

答案 0 :(得分:2)

段寄存器值向左移4(乘以16)并加到操作数地址。

16 * 65536 = 1兆字节。

答案 1 :(得分:1)

8086有20位地址线。所以它可以解决的最大值是2 ^ 20 = 1MB。 http://en.wikipedia.org/wiki/Intel_8086

答案 2 :(得分:1)

实际上只需要四个位(或一个四位寄存器)来处理多达1,048,360个字节...(65,535到1兆字节)但它们有一个16位寄存器......所以他们使用了16位寄存器反而期待存储器地址总线扩展到32位的日子。 英特尔8088有20条地址线,编号为A0-A19 该处理器可以处理1兆字节的内存。 FFFFF将是最大的线性地址...每个十六进制数字4位,5位= 20个地址线。

我认为这个线性地址需要一段000F和一个FFFF

的偏移量