自制一个简单的启动扇区,可以打印hello,world!
0,0
0,0
准备工作
计算机启动过程:按指令执行顺序划分为3个过程
- BIOS启动,第一条指令地址位于bios的映射(把bios的所有指令映射进内存)地址,所以bios启动,执行硬件检测和初始化,激活鼠标键盘,最后jmp到0x07c00处,这是code约定。
- 启动扇区启动,硬盘把启动扇区的指令映射到0x07c00处,指令从该扇区执行,最后jmp到IPL,也就是初始化程序加载器的内存地址
- 程序加载器启动, IPL作为加载器加载非常多的其他软件实现OS的启动。
启动扇区:
启动扇区位于硬盘的0面0道1扇区,只有512个字节,判断一个扇区是否为启动扇区,cpu只是简单的做了两次判断:
- 启动扇区的第一个字节不为0字节。
- 最后两个字节为0x55,0xaa。
这两个条件满足,就认为是启动扇区。
所以做一个简单的启动扇区只需要按下面这样做:
就3条汇编指令,“;”后面的都是注释。
;最简单的启动扇区
;启动扇区的判断条件:第一个字节不为0x00字节,最后两个字节为0x55,0xaa
;cpu执行全为0x00字节时会跳过,然后就会停住
;一个扇