编写bootsect.s:
编译
去除头部描述符并且运行
创建setup.s
修改bootsect.s
修改build.c配置:
运行
扩展
更改setup.s显示参数:
查看实际配置:
可以看到head和cylinders参数显示正确
x86计算机启动过程中被硬件强制,软件所执行多此一举的步骤:
1)x86计算机启动后,执行BIOS的代码,由于BIOS的访问地址有限,所以需要把操作系统开始的引导程序读到0x7c00处,在执行的的过程中再把其移到内存中相对靠后的位置,以便加载系统主模块,这是“多此一举”的。
解决方案:在保证系统可靠性的前提下尽量扩大bios可访问的内存范围。
2)x86CPU启动时为了向下兼容16位计算机使用实模式:纯16位五保户执行环境。而80286或以上的CPU通过A20 GATE来控制A20地址线。80386及后续系列为了和8086体系兼容仍然使用A20地址线,所以为了兼容以前的程序,不得不保留实模式,如果访问100000H-10FFEFH之间的内存,系统将实际访问这块内存。进入实模式多此一举,可以直接进入保护模式。
解决方案:不向下兼容,直接进入32位的保护模式,因为现今主流计算机都已经是32位或者64位了,没有继续兼容16位计算机的必要。
学习时间 349分钟
操作时间 155分钟
按键次数 7254次
实验次数 14次
报告字数 1392字
是否完成 完成