boot and loader

boot and loader

boot 程序的所有作用

  • 清屏
  • 将光标移到屏幕左上角
  • 显示 Start Boot 提示信息
  • 加载 loader 程序的代码到 0x10000 物理内存地址
  • 将CPU的段地址设置为 0x1000, 偏移量为 0x0000

boot 程序(内置 FAT12 文件系统的引导扇区的信息)的编写

  • 注意boot不能实现FAT12文件系统, 因为boot的要求是512B, 但是使用FAT12文件系统的前提是有引导扇区的信息, 所以在boot定义好, 到时都我们要将我们的软盘格式化成FAT12文件系统
  • 第一行 org 0x7c00, 告诉CPU指令CS和IP的值
  • 初始化DS, ES, SS, SP, 其中SP为0x7c00
  • 填写 FAT12 的引导数据
  • 注意:
    • 写完一部分如果要测试的话需要加上jmp $让程序一直运行才行否则不会有任何的显示
    • 在汇编中有函数和标签两个概念, 我们一般这样规定, 函数使用call指令调用, 在该函数中我们要开辟一个新的栈, 如果要为cx等寄存器赋值的话, 需要将他们的值保存起来, 放到栈中, 在函数结束之前回复cx等寄存器中的值; 而标签使用jmp, jz等指令执行, 他们不需要必须保存cx等值, 而是视需求而定, 一般来说函数为模块, 而标签为流程
    • 每一个Label结束之后都应该添加一个跳转jmp指令, 使得程序执行的流程清晰

猜你喜欢

转载自www.cnblogs.com/megachen/p/9726845.html