【OS】05 – 主引导程序的扩展(下)

  • 【OS】05 – 主引导程序的扩展(下)已关闭评论
  • 129 次浏览
  • A+
所属分类:linux技术
摘要

mycode : mycode 突破引导程序方法: 再写一个程序,并且把这个程序放到存储介质中;

mycode : mycode

思考

突破引导程序方法:

再写一个程序,并且把这个程序放到存储介质中;

主引导程序要加载这个新的程序,将控制权转交给新的程序;

遇到的问题:怎么在存储介质中找这个新的程序呢?

那就需要借助于一个文件系统,有了文件系统,就可以很方便的把写好的程序放到软盘里了,也可以根据文件系统数据组织的方式,来放便的找到新的程序;

【OS】05 - 主引导程序的扩展(下)【OS】05 - 主引导程序的扩展(下)【OS】05 - 主引导程序的扩展(下)【OS】05 - 主引导程序的扩展(下)

【OS】05 - 主引导程序的扩展(下)

实验: 读取根目录信息

先读取文件项,再读取目标文件内容

【OS】05 - 主引导程序的扩展(下)

【OS】05 - 主引导程序的扩展(下)【OS】05 - 主引导程序的扩展(下)【OS】05 - 主引导程序的扩展(下)【OS】05 - 主引导程序的扩展(下)【OS】05 - 主引导程序的扩展(下)

实验: 加载FAT12中的文件数据

【OS】05 - 主引导程序的扩展(下)

【OS】05 - 主引导程序的扩展(下)【OS】05 - 主引导程序的扩展(下)

实验: 读取指定文件内容

【OS】05 - 主引导程序的扩展(下)

【OS】05 - 主引导程序的扩展(下)

ret[j] = static_cast<ushort>((fat[i+1] & 0x0F) << 8) | fat[i]; ret[j+1] = static_cast<ushort>(fat[i+2] << 4) | ((fat[i+1] >> 4) & 0x0F);

【OS】05 - 主引导程序的扩展(下)