第一天--第三天小结
这部分完成了操作系统的启动过程(将软盘内容读入到磁盘中,并执行相应的指令)
一、系统启动
(一)制作启动区
主要完成读入软盘内容到内存中的任务,该部分需控制在512字节以内,并且符合系统引导程序的要求
(二)将文件保存到软盘中以便读取
书中使用了nask.exe将操作系统文件(暂时这样称呼)生成了sys文件,同时使用了edimg.exe将sys文件写入到sys之中。
(三)开始执行操作系统
书中总结了空白软盘保存文件时的规则(文件名和文件内容存储的位置),结合了org和jmp指令,实现了在读取完成后跳转到操作系统指令开始执行。
流程:系统启动-->读取操作系统文件到内存-->跳转-->开始执行操作系统指令
二、32位模式前准备
(一)存储相关画面信息
设定开始地址,然后赋值。如VARM EQU 0X0FF8 MOV DWORD [VARM],0X000A0000
(二)开始导入C语言
了解C语言编译成机器代码的过程,最后在sys文件中,C语言文件和asmhead.nas文件的内容会合在一起,C语言文件的内容编程bootpack标号下的指令
C语言中调用汇编函数的方式
三、其它注意点
在读取软盘文件时,设置了从0磁头、0柱面、2扇区开始,所以书中在读取软盘内容时采取了一个比较简单的方式,降低了理解难度,但是会把与文件无关的内容也读入到内存中
阅读代码时要结合Makefile文件
四、问题
本书在进入保护模式时不像其它的书中写的有一个明显的16位到32位的跳转指令,暂时没明白是如何实现的?
本书在进入保护模式时不像其它的书中写的有一个明显的16位到32位的跳转指令,暂时没明白是如何实现的?