众所周知,计算机开机那一瞬间第一个启动的软件是BISO,那你有没有去想过如下三个问题?
1.bios程序是被谁加载的?
2.它被加载到哪里?
3.它的cs:ip是谁来修改的?
Intel 8086 有20条地址线, 所以它可以访问的内存长度为2的20次方=1048576=1MB。如果按照16进制来表示其范围就是0x00000到0xFFFFF。而这1MB的空间被分为了若干空间。大致如下图:
首先我们乍一看这张表或许会觉得挺复杂,其实我们给它做一下分类就非常容易理解。在讲这张表之前我们先回答第一个问题。
bios程序是被谁加载的?
在计算机硬件构造中,有一种存储结构ROM(只读存储器),它用来存储一尘不变的数据,数据一旦写进去,就不会再修改,当然现在很多的bios支持升级,这估且不谈,起码从前几乎是不会修改的,除非主板坏了需要刷bios了,哈哈哈。 ok,了解了bios的硬件特性后,我们看一下它在实际的内存中的地址。 biso通常被映射在低端1MB内存的顶部, 即0xF0000 ~ 0xFFFFF,上图中可以看出这块空间包含了bios系统的本体,与一条16B大小的跳转指令。
ok,看完内存结构,我们来讲一下bios实际在硬件层中的启动过程。
它的cs:ip是谁来修改的?
在通电开机的一瞬间,c