题目是起的简陋一点 但是不影响我们的操作 长话短说 自己看代码 加了注释了
今天我们讲讲如何实现内核 还有内核的意义 我们的扇区0的引导扇区的程序又是干嘛的
一 加载内核
第 1 阶段:BIOS 运行阶段,在这个阶段主要对系统中的硬件进行初始化,并创建实模式下的中断系
统,最后将 cpu 在第 2 阶段运行的可执行文件 bootsect.bin 加载到物理内存,并跳转运行可执行文件 bootsect.bin;
第 2 阶段:引导任务运行阶段,在这个阶段中 cpu 在实模式下运行可执行文件是 bootsect.bin。因为
引导任务的可执行文件 bootsect.bin 的大小不能超过 512B,所以在引导任务运行阶段无法做太多工作。因
此本阶段的主要工作是:将 cpu 在第 3 阶段运行的可执行文件 kernel.bin 加载到物理内存(如图 1.3所示),并开启分段机制进入保护模式后,跳转运行可执行文件kernel.bin
第 3 阶段:内核运行阶段,在这个阶段中 cpu 运行操作系统的核心代码——内核。
这里几个例子
1.引导程序
.code16
BOOTSEG = 0x7c0#在实模式下给cs段进行赋值16位的逻辑段
KERNELLEN = 1#加载一个扇区521B
ljmp $BOOTSEG, $go#自动跳转到执行引导程序的起始地址
go:
movw %cs, %ax #代码段和数据段共享一个bin程序
movw %ax, %ds
movb $0x42, %ah#把磁盘中的数据加载到物理内存
movb $0x80, %dl #主机中第一个硬盘号默认为0x80号
movw $parameters, %si#传参ds:ip指向参数的地址
int $0x13 #调用13