[OS64位][012]小结 程序3-3 boot.asm 做了

2019-05-09  本文已影响0人  AkuRinbu

学习笔记

使用教材(配书源码以及使用方法)
《一个64位操作系统的设计与实现》
http://www.ituring.com.cn/book/2450
https://www.jianshu.com/p/28f9713a9171

小结 程序3-3 Boot.asm 做了哪些工作?

此时软盘已经拥有了FAT12文件系统,boot 要从FAT12的数据区中,找到 文件名是loader.bin的文件,把这个文件的全部数据读入到物理内存0x1000:0000处,然后设置跳转指令,跳转到物理内存 0x1000:0000处开始执行loader.bin的机器码

(机器码只有在内存里才可以运行,任何机器码必须先读入内存,CPU不知道从内存哪里开始执行指令,所以要明确地使用跳转指令,本质就是强制地设定CS:IP的值,即告诉CPU请从这里开始

■ 读取一个软盘扇区数据到内存指定位置 Func_ReadOneSector
■ 在FAT12文件系统 根目录区 查找 文件名是 loader.bin 的目录项Lable_Search_In_Root_Dir_Begin
■ 在FAT12文件系统 找到 属于loader.bin 的全部簇的簇号Func_GetFATEntry
■ 根据簇号,调用软盘读,把属于指定文件的全部数据都读到内存指定位置

loader.bin 是文件名.后缀名,这个是硬编码在汇编代码里的,如果你愿意,你当然可以写hello.txt,只要你在代码里也同步修改成hello.txt

举个例子:吃饭

参考资料

Lable_Search_In_Root_Dir_Begin  在根目录区查找目录项
    Label_Cmp_FileName          对比文件名
        Label_FileName_Found    找到一致的文件名
            Label_File_Loaded   已经读入目标文件全部扇区数据

https://www.jianshu.com/p/2c03cdd67d4e

https://www.jianshu.com/p/cdf5cb908693

https://www.jianshu.com/p/542af8c6423e

https://www.jianshu.com/p/d772901a6be3

上一篇下一篇

猜你喜欢

热点阅读