当前位置: 首页 > news >正文

BIOS+MBR微内核加载loader程序实现过程

上一篇讲到的微内核程序是由BIOS例程自动加载到内存中运行的,而且大小有限,能做的事情有限。我们知道内核程序大小是可以扩展的不能只有512字节,同时在加载运行内核前还需要完成一些必要的实模式下才能做的准备工作。所以单纯在实模式下只使用微内核程序是不太够的,就有了加载程序setup(有的项目也叫bootloader)的引入。
在正常工作是,由bios加载微内核程序以后,微内核将加载程序加载到内存中,然后由用户自己实现的加载程序完成内核运行环境准备以及加载内核的工作。这样做,自由度就较高了,本文完成上述过程的演示工作,分为下面几个部分讲解:
1)整体项目工作安排
2)硬盘驱动结构讲解
3)读硬盘操作过程讲解
4)实战演练

#整体项目框架:
上一篇完成的Boot程序继续充当微内核角色,完成以下工作内容
1)使用BIOS中断清空屏幕
2)将setup程序从硬盘读取到内存的0x500的位置(实模式下的可用内存区域)
在这里插入图片描述

3)使用print打印字符:send to setup
4)跳转到0x500继续执行setup程序

开辟一个新的加载程序setup,完成一下工作:
1)清空屏幕
2)打印字符:hello world

##硬盘驱动接口讲解
上述没接触到技术点就是如何汇编实现硬盘驱动完成读硬盘的操作,在实模式下我们直接使用传统硬盘接口的 I/O 控制机制操作主通道的硬盘hd.img(分通道设置硬盘后续再说),如下图所示:
在这里插入图片描述
###关键接口讲解:deepseek写的不完全正确
1)0x1F0:
进行读写操作寄存器,内部可读写大小为16位
2)0x1F2:
操作扇区个数(一般一个扇区51

http://www.dtcms.com/a/288997.html

相关文章:

  • 从零开始开发纯血鸿蒙应用之跨模块路由
  • 编程语言Java入门——核心技术篇(一)封装、继承和多态
  • 【图文详解】Transformer架构详细解析:多头自注意力机制、qkv计算过程、encoder架构、decoder架构以及mask的意义
  • Request和Response相关介绍
  • 假如只给物品编号和物品名称,怎么拆分为树形结构(拆出父级id和祖籍列表),用于存储具有层级关系的数据。
  • 高效培养AI代理的全能工具:Agent Reinforcement Trainer
  • Windows CMD(命令提示符)中最常用的命令汇总和实战示例
  • 【unitrix】 6.10 类型转换(from.rs)
  • 【windows 终端美化】Windows terminal + oh-my-posh 来美化命令行终端
  • Word for mac使用宏
  • 对粒子群算法的理解与实例详解
  • MybatisPlus-13.扩展功能-DB静态工具
  • Twisted study notes[2]
  • Linux——进程的退出、等待与替换
  • ThinkSound:阿里开源首个“会思考”的音频生成模型——从“看图配音”到“听懂画面”的技术跃迁
  • C++ Primer(第5版)- Chapter 7. Classes -004
  • Dockerfile配置基于 Python 的 Web 应用镜像
  • 考研最高效的准备工作是什么
  • docker制作前端镜像
  • JVM-Java
  • 每日算法刷题Day50:7.20:leetcode 栈8道题,用时2h30min
  • 全面解析 JDK 提供的 JVM 诊断与故障处理工具
  • 零基础学习性能测试第二章-JVM如何监控
  • Android系统5层架构
  • 【论文笔记】OccluGaussian解决大场景重建中的区域遮挡问题
  • 5G NR PDCCH之信道编码
  • c#:管理TCP服务端发送数据为非16进制
  • 4、ubuntu | dify创建知识库 | 上市公司个股研报知识库
  • Python知识点4-嵌套循环break和continue使用死循环
  • 统计与大数据分析和数字经济:专业选择指南