《操作系统真象还原》学习笔记:第2章——编写MBR主引导记录

2.1 计算机的启动过程

载入内存:

(1) 程序被加载器(软件或硬件)加载到内存某个区域
(2)CPU 的 cs:ip 寄存器被指向这个程序的起始地址

2.2 软件接力第一棒,BIOS

2.2.1 实模式下的 1MB 内存布局

Intel 8086 有 20 条地址线,故其可以访问 1MB 的内存空间,即2的20次方=1048576=1MB。
实模式下的内存布局如下:
在这里插入图片描述
(1)在电脑未开机前,BIOS就被事先写入到内存的F0000~FFFFF中,此区域为ROM,这里面存的是 BIOS 的代码。BIOS的主要工作是检测、初始化硬件,建立中断向量表。
(2)除了内存条,还有一些外设同样是需要通过地址总线来访问。

2.2.2 BIOS 是如何苏醒的

在开机的一瞬间,CPU的cs:ip寄存器被强制初始化为0xF000: 0xFFF0,由于开机的时候处于实模式,按照实模式的寻址方式段基地址要乘以16,也就是左移4位,然后再加上段内偏移地址,则计算得这个实际的物理地址为0xFFFF0,此地址便是BIOS程序的入口地址。而从地址0xFFFF0~0xFFFFF只有16B的空间,这说明BIOS真正的执行脚本并不存储在这里,开机后执行的第一条语句一定是跳转语句jmp,其实执行的第一条语句是:

jmp far f000:e05b

在这里插入图片描述
跳转到了0xfe05b处,说明这里才是BIOS代码真正开始的地方。接下来就是BIOS不断进行检测内存,显卡等外设信息,然后初始化硬件的过程了。

2.2.3 为什么是 0x7c00

BIOS 最后一项工作校验启动盘中位于0盘0道1扇区的内容。如果此扇区末尾的两个字节分别是魔数0x550xaa,BIOS便认为此扇区中确实存在可执行的程序,并把这个扇区的内容加载到物理地址0x7c00的内存中。

2.3 实验

任务:
(1)完成mbr主引导记录的代码编写,并完成编译,完成的代码编译并非真正的MBR主引导程序,而是为了测试mbr程序是否会被加载到0x07c00处被正确执行。
(2)将编译生成的主引导记录内容刻录到我们的创建的启动硬盘中。
创建mbr.s文件:
(1ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值