维基百科页面为重置向量 http://en.wikipedia.org/wiki/Reset_vector说(对于 386+ 处理器):
复位时 CS 寄存器选择器部分的值为 F000h,CS 寄存器基址部分的值为 FFFF0000h,复位时 IP 寄存器的值为 FFF0h,形成实模式下的分段地址 FFFFF000h:FFF0h 。
我所有关于计算机启动的阅读都说处理器以实模式启动,因此“选择器”不应该出现。那为什么要在这里提到呢?另外,这里所说的“基本部分”是什么,它存储在哪个寄存器中?基本上,我不明白 386 处理器与以前的处理器的重置向量设置有何不同。
需要访问的地址是存储器的最后 16 个字节,因为这是存储复位向量的地方。
CS 值不同的原因是 8086/80186 和 80286+ 处理器之间的差异。在 80286 及更高版本的处理器上,存在一个全局描述符表 (GDT),它指定如何在系统上访问和使用内存。 8086 没有 GDT,因此内存访问基本上是固定的。即使在 286+ 的实模式下也存在 GDT 条目。
The base and selector您所指的值只是base and selectorGDT 条目的一部分。
因此,由于 GDT 条目存在并且对所有处理器模式下的 286+ 处理器都有影响,因此重置向量的设置有所不同。在新启动的系统上,使用以下段:偏移值:
8086/80186 (16-bit): 0xFFFF:0x0000
80286 (16-bit): 0xF000:0xFFF0
80386+ (32-bit): 0xFFFFF000:0xFFF0
(64-bit): 0xFFFFFFFFFFFFF000:0xFFF0
本质上,在 80286 及更高版本的处理器上,除了段值在 32 位和 64 位处理器上进行符号扩展之外,偏移量和段值是相同的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)