当前位置: 技术问答>linux和unix
开机后,CPU执行的第一条指令是BIOS中的指令吗?
来源: 互联网 发布时间:2015-03-07
本文导语: 一般认为,开机后BIOS最先被启动,首先进行上电自检,然后进入系统启动自举程序。但我认为,未必如此。上电自检程序和系统启动自检程序都是程序,既然是程序,就应当由CPU执行。Pentium的资料上说,CPU在完成初...
一般认为,开机后BIOS最先被启动,首先进行上电自检,然后进入系统启动自举程序。但我认为,未必如此。上电自检程序和系统启动自检程序都是程序,既然是程序,就应当由CPU执行。Pentium的资料上说,CPU在完成初始化之后首先从FFFF,FFF0H开始执行,此时地址线的31-20位为高,在执行到第一条段间跳转指令或者CALL指令(在地址FFFF,FFF0H-FFFF,FFFFH之间必须有段间跳转指令或CALL指令)之后,地址线的31-20位变为低,转入系统的入口处,只执行低1M物理内存的指令(即进入实模式)。既然Pentium首先从FFFF,FFF0H开始执行,就必须有一个存储部件的物理地址包含FFFF,FFF0H,请问是哪个存储部件呢?我所知道的主板上的存储部件包括ROM BIOS、CMOS RAM、内存插槽上的内存,ROM BIOS占用的是从0FE00H开始的8K空间,显然ROM BIOS中不包含FFFF,FFF0H,也就是说,开机后,CPU执行的第一条指令不是BIOS中的指令。各位大侠以为对否?望赐教。
|
就是BIOS的ROM。
开机时是实模式,CPU从FFFF:FFF0寻址(实模式的指令字长),其实就是读了内存最高端的第一个指令,通常是跳转指令,跟入真正的代码段。
别忘了实模式的内存寻址是:内存段:偏移地址,同一个物理内存地址可以有不同的段+偏移地址表示方式。(若没记得的话段地址间只相差16K的)
ROM BIOS还可以实现代码整段搬移、重定位等功能。
开机时是实模式,CPU从FFFF:FFF0寻址(实模式的指令字长),其实就是读了内存最高端的第一个指令,通常是跳转指令,跟入真正的代码段。
别忘了实模式的内存寻址是:内存段:偏移地址,同一个物理内存地址可以有不同的段+偏移地址表示方式。(若没记得的话段地址间只相差16K的)
ROM BIOS还可以实现代码整段搬移、重定位等功能。
|
http://expert.csdn.net/Expert/topic/1766/1766165.xml?temp=.1257288
上面有一篇写得很详细
上面有一篇写得很详细