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指令, 使得程序执行的流程清晰
原文地址:https://www.cnblogs.com/megachen/p/9726845.html
时间: 2024-10-28 20:42:17