2-BIOS

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/king_qg/article/details/86479351

BIOS

内存

无论什么汇编寻址都无外乎3中,立即数,寄存器和内存。最复杂的当属于内存。因为程序都是存储于内存中的,所以在将第一个运行的程序(BIOS)时先介绍内存。

容量

8086的内存有1MB的容量,但是这1MB分别映射到不同的器件上。

组成

内存由三部分组成:

  • ROM
  • 外围板卡
  • 内存条

映射范围及用途

器件 范围 用途
ROM 0xf0000-0xfffff BIOS固件
外围板卡 0xa0000-0xeffff 外围器件的数据
内存条 0x00000-0x9ffff 存储数据

计算机架构

  1. 硬件层
  2. BIOS
  3. 操作系统
  4. 软件层

BIOS功能

计算机上电后***第一个运行的程序***,执行完后把控制权交给***主引导程序***

  1. 检测硬件状态,检测通过后进行硬件初始化
  2. 在内存建立中断向量表(提供了硬件访问方法)

为什么BIOS是第一个运行的程序

处理器中有一个reset的引脚,每当这个引脚被触发时,处理器都会执行一次硬件的初始化,并且会将内部所有的寄存器初始化到一个阈置的状态(电路设计)。

8086在上电后,CS段寄存器会被初始化为0xffff,其他所有寄存器都会初始化为0。那么第一条指令的物理地址是0xffff0,这个位置会有一个跳转指令。跳转到BIOS程序的位置。

后续的x86没有延续这个方案,但是思路都是一致的。

BIOS控制权转移

  1. 安装设置扫描存储介质
  2. 发现主引导区后,将主引导程序加载到内存
  3. 主引导程序的入口地址是0x7c00
  4. 调用主引导程序

总结

BIOS是一种固件,直接固化在内存中,这段内存分配给ROM,所以掉电不会丢失。电路设计使的上电后程序首先执行BIOS程序,BIOS检查硬件,寻找主引导程序,并将主引导程序加载到内存中起始地址为0x7c00的位置。跳转到该位置开始执行主引导程序。

关于作者

大四学生一枚,分享数据结构,面试题,golang,C语言等知识。QQ交流群:521625004。微信公众号:后台技术栈。
image

猜你喜欢

转载自blog.csdn.net/king_qg/article/details/86479351