【发布时间】:2015-11-13 09:25:28
【问题描述】:
8086 和其他处理器的复位引脚将导致 CS:IP 指向 FFFF:0000,即内存的最低 16 字节。在那个位置有一个跳转指令到内存空间中的其他地方来初始化处理器。
我的问题是,为什么指向最后一节,然后故意跳到其他地方?为什么处理器制造商不将 CS:IP 重置为 0000:0000?然后,他们可以编写一些初始指令而无需任何跳转!
这难道没有意义吗?
【问题讨论】:
-
相关:Why does 8085 start from 00000 whilst 8086 starts from FFFF0(我发誓最近在一个姊妹网站上还有一个关于此的问题,但我不记得是哪一个了,而且这个问题是边缘题外话,所以可能已经消失了)
-
FFFF:0000 是内存的最低 16 字节?你确定这是最低的吗?在我看来,映射到 1mb 区域的 FFFF0(最后 16 个字节)。
-
可能应该指出,大多数 386 的执行从
F000:FFF0开始。在实模式下也映射到 FFFF0,但大多数 386 以虚模式启动,其中段 F000 与映射到基地址 FFFF0000 的描述符相关联。当添加到偏移量 FFF0 时,它会产生一个地址 FFFFFFF0,它比 4gb 标记低 16 个字节。 -
ROM 需要映射到复位地址,这样处理器才能可靠地执行启动代码。将 ROM 置于最高地址,将 RAM 置于低地址,具有许多系统设计优势。好吧,无论如何,40 年前,当芯片组的概念仍然是一个遥远的未来主义想法时。