10.2 实模式初始化(Software Initialization for Real-Address Mode)

在实模式下,当程序可以完全使用处理器的特性前,一些数据结构必须先初始化。

10.2.1 堆栈(Stack)

当堆栈段寄存器(SS寄存器)没有被加载前,所有使用堆栈的指令都是不可以使用的。SS必须指向RAM内的一片区域。

10.2.2 中断表(Interrupt Table)

80386开始时是禁止中断的。但是,当一个异常或是不可屏蔽中断(NMI)发生时,处理器还是可能访问中断表。初始化软件应做一个以下的操作:

  • 把IDTR中的界限值改为0。这可以使,当发生异常或不可屏蔽中断时,处理器停机。(关于如何在外部引起处理器的停机,请参看80386硬件参考手册)

  • 将可能使用到的异常或中断的有效的中断处理程序的指针放入中断表中。

  • 改变IDRT,使之指向一个合法的中断表。

10.2.3 第一条指令(First Instructions)

复位以后,地址线{31-20}将自动置成高电平,以便取指令。这样,加之CS:IP的初值,导致指令从物理地址 FFFFFFF0H处开始执行。近(段内的)的控制转移可以用来将控制转移到高于这个地址空间的64K字节的某处。第一条远的(段间的)JMP或CALL指令将让A{31-20}置成低电位,所以80386处理器就又执行在物理内存的低1M字节内了。这样的自动设置地址线A{31-20}允许系统设计者把高端地址空间设计成ROM,从而来初始化系统。