3

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

4

3 回答 3

3

段寄存器值左移 4(乘以 16)并添加到地址地址的“偏移”部分。

16 * 65536 = 1 兆字节。

于 2012-01-01T19:44:44.670 回答
1

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

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

于 2015-07-14T23:45:22.567 回答
0

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

于 2014-05-20T09:04:39.330 回答