自制操作系统---eposide 1

引导入门:
站在一个外行的角度,所谓操作系统,其实是不存在的(你在说什么 ?), 是的,不存在的,不管你信不信,你都要接受这个现实,你可以想象一下,电脑是如何启动的:

  1. 按动启动按钮,这里可能由一个简单的电路来实现接收按钮的按下操作,这可不是普通的船型开关,所以在电脑启动前,电脑必须加电的,船型开关,比如家里的电灯就不需要,直接上下拨动就表示开或者关
  2. 最先加电的是主板,它会尝试和CPU进行联络,确保CPU一切正常后,它会通过CPU的电路先将BIOS中存储的一部分硬件驱动加载到内存中去, 所谓驱动,其实就是一些机器码,你可以想像得到,这时候没有java没有C没有任何编程语言,只有电路。
  3. 加载好了之后,主板尝试启动BIOS系统,它确实是一个系统,在内存中已经加载好了,这时候指令寄存器会确保跳转到内存中正确的位置进行启动
  4. BIOS启动后,根据已经加载的硬件驱动,进行硬件的查找,比如显卡,键盘,鼠标,硬盘或者软驱,它会在找不到一些硬件的时候报错,当然有些坑爹的BIOS会在找不到键盘的时候进行如下提示:keyboard not found , press f1 to continue
  5. 然后,BIOS会根据用户设置的启动方式,按照启动顺序挨着盘地在可以搜索到的盘中查找操作系统,它查找操作系统的方式和我们正常人可不一样,当看到一个盘的时候,它把它的第一个柱面的第一个扇区拷贝到内存中去,然后查看第512个字节的位置,如果是一个启动盘,则它会继续执行里面的内容,这也就是所谓的启动区了,如果不是,pass,下一个
  6. 如果找到启动区,BIOS的就会把接力棒交给启动区去执行了,这时候启动区仍然可以调用BIOS已经加载好在内存中的驱动,这就是为啥我们写操作系统的时候,可以调用显卡驱动的原因。
  7. 那么如何让BIOS启动的时候,报系统找不到的错误呢?so easy, 修改硬盘的第一个柱面第一个扇区的最后两个字符,甚至只修改一个就行,只要不是 0x55,0xaa 就可以,这样玩风险很大,玩不好挂掉整个硬盘不要怪我。不过你也可以为此专门只做只有你自己才可以打开的操作系统,你可以写个小程序,专门修改这个位置的字符,就达到了加密的目的,当你想启动系统的时候 ,再把它改过来。
  8. 正式接管系统之后,你可以做任何事情了,这时候想效用一下显卡显示个字符之类的都是小菜一叠。

    下面就是直接调用显卡驱动,在屏幕上面显示一个字符的汇编源程序

MOV AL,'H'
MOV AH,0Xe
MOV BX,15
INT 0X10

RESB 0x1fe-$
DB 0x55,0xaa

这段程序的解释:
既然我们的操作系统,是写在BIOS已经加载好了之后,这时候我们已经可以加载BIOS为我们准备的显卡驱动了(显卡驱动?不是要等操作系统安装后安装吗?这里是什么?其实,每个显卡在设计的时候,都会遵循一个默认的显卡驱动,这个驱动可能很简单不会发挥出你显卡真正的威力,但是这是必要的,因为BIOS启动的时候,需要显示的东西,要通过这个显卡驱动完成,所以说这个显卡驱动,每个显卡都一样,你总不会说出了一款显卡,就要在BIOS里面加入新的驱动吧。)

我们这个程序,其实就是调用显卡驱动完成的,没有什么神奇的地方,后面的RESB 0x1fe- 符号,其实是计算前面已经有多少个字节的意思,所以 0x1fe正好就到了该写那两个字符的位置了,你懂的。
DB意思就是写一个字符,后面跟了 0x55 0xaa 就是表示写两个字符的意思,你懂的。

那么我们调用显卡显示字符,其实就是4行:

MOV AL,'H' ;
MOV AH,0Xe ;显示一个文字
MOV BX,15  ;调用显卡BIOS
INT 0X10   ;调用显卡BIOS

怎们样,简单不?这里甚至可以调用颜色呢:MOV BX,15 中传入的颜色值

今天写到这里,先上班了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值