计算机启动过程的简要说明

BIOS电脑启动过程

写在前面:这是我的个人学习过程的总结,可能有很多描述不周与讹误,还需要不断打磨,还请各位朋友不可尽信且不吝赐教

首先需要明确一点,这是一台计算机——它只需要能够取指执行,它便能够被称为是一台计算机。
而为了完成这一活动,显然,我们需要保存指令的内存以及运行指令的处理器,这样就组建完成我们所说的电脑。

但是,我们知道CPU,内存是会掉电的,也就意味着——在最初的时候,内存和CPU里面什么都没有,于是有了BIOS(基本输入输出系统),这是一段固化在ROM上的程序。它不会因为系统掉电而消失,它能完成一些基本输入输出和中断控制,但它不能发挥出CPU的强劲功能(要知道,当计算机从16位的实模式到32位保护模式之后,我们便使用不了BIOS)。所以我们还需要有包含操作系统的第三方存储介质,于是硬盘、软盘、U盘之类成为我们载入程序的手段(一般是操作系统,当然也可以是dos之类的,用于鼓捣汇编语言)

当我们书写操作系统时,需要了解,一台计算机是如何启动的,我们的代码从何时何地开始运行。

  1. 首先得开机
  2. BIOS 加电自检,将CS:IP寄存器置为0xffff0,而这里一般是一个跳转指令,指向BIOS的入口。
  3. BIOS初始化,建立BIOS中断向量表,存入物理地址(0x0000-0x03ff)1KB空间汇总(这张表会有很多空缺,是BIOS尽力而为的体现,相当于它为你挖好种萝卜的坑)
  4. 将硬盘第一个扇区0头0道1扇区(第一逻辑扇区) boot sector 读入到内存0000:7c00处
  5. 通过判断该扇区最后两个字节是否是0xaa55(这是规定),确定是否确实是boot,如果不是则尝试寻找其他启动介质
  6. 开始执行07c00处启动程序(这一段是由汇编语言编写的)
  7. 之后,启动程序会经过一系列操作完成从实模式到保护模式跳转,再加载对应操作系统内核。

BIOS显存部分

在上面我们使用到了硬件有:cpu,rom,内存,以及磁盘。
作为编程,我们需要一个窗口告诉我们信息(就像控制台一样的作用),所以此时我们还需要一块显示屏幕。

首先思考,当我们想要输出一些信息的时候,我们至少要提供——输出的信息,输出信息在屏幕上的位置(这在逻辑上,应当是一个二维坐标),输出信息的属性(背景色,字体色之类的),其他太复杂的暂且不考虑。

太多复杂的属性会意味着更为复杂的底层编程,因此我所使用的窗口是一个简单文字窗口——经典的显示器80*25模式,这对于验证代码正确性而言,已经足够了。

在内存里有一块区域,我们能够直接操作显示器的显示字符,我们成为BIOS显存,这是BIOS提供的,我们通过对内存的操作,从而间接控制显示效果。

地址分布

B8000 - BFFFFH 32KB —— 用于文本模式显示

对于屏幕上字符属性占用两字节:
前一字节属性,后一字节其ASCII码

具体属性,之后再更新

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值