day1引导程序

2018-11-30  本文已影响0人  柯基是只dog

x86的机器在通电后内存是干净的,这时候就必须有一个初始程序提供加载等一些工作,这个就是bios了,bios一般写在芯片里,具有断电也能持久存储的性质。bios提供了硬件的驱动,以中断形式提供服务。以软盘启动为例,bios会把软盘第一个扇区内容读到内存的0x7c00处(这是规定,0地址开始的地方存着中断表等bios需要的东西),然后cpu就开始从0x7c00开始执行了。所以写一个引导程序就必须把我们的代码写到软盘的第一扇区中,因为一个扇区只有512K,而且最后两个字节必须是0xaa55结尾。那么我们的代码就必须在这规定的大小内完成。

今天完成的只是完成一个1.44M软盘的制作,并写一个在屏幕上输出helloworld的程序写到软盘的第扇区。

软盘制作命令:

1. 创建一张1.44M空白软盘镜像
dd bs=1024 if=/dev/zero of=yourname.img count=1024
2. 把boot.bin内容写到第一扇区
dd if=boot.bin of=yourname.img bs=512 count=1 conv=notrunc

运行环境:bochs

代码:https://github.com/Corgidog/kernel/tree/master/asm/day1

运行步骤

make
bochs -f bochsrc.bxrc
上一篇 下一篇

猜你喜欢

热点阅读