8086和其他处理器的复位引脚将使CS:IP指向FFFF:0000,这是内存的最低16字节。在该位置,存在到存储器空间中的其他地方的跳转指令以初始化处理器。
我的问题是,为什么指向最后一节,然后故意跳到其他地方?为什么处理器制造商不将CS:IP重置为0000:0000?然后,他们可以写一些初始指令而不会跳转!!
这没有意义吗?
答案 0 :(得分:6)
这是所有传统界面:)
在0000:0000,有一个IVT(中断向量表)处理中断(INT xx-instruction),其中一个数组(地址表)可能由8086硬件中的扩展call dword ptr [interrupt# * 4]
指令访问,因此int0(除以0)= [0*4]
,int1 ...,int2(NMI中断=“不可屏蔽中断”,无法通过CLI指令关闭)= [2*4]
,等等上。
在FFFF:0000或F000:FFF0(1兆字节前的最后16个字节)有8086架构的主板BIOS-ROM(只读)的缓存副本,从F000:0000到F000:FFFF (64 kByte)。进入BIOS初始化例程的任意但体系结构固定的入口点。
见这里:http://files.osdev.org/mirrors/geezer/osd/ram/index.htm#layout 还有:http://wiki.osdev.org/Memory_Map_%28x86%29#Overview
我认为将BIOS地址设置为0000:0000会使8086-CPU中的电路变得复杂,以便使用INT / IRET计算地址和访问/调用中断,如果表位于零,则非常容易。中断速度=减少电路似乎在没有MMU的情况下至关重要,因为在386架构中,您可以使用LIDT指令设置中断表的地址。