自启动程序设计:从汇编语言实现软盘引导

需积分: 12 7 下载量 57 浏览量 更新于2024-07-29 收藏 45KB DOC 举报
"这篇内容是关于汇编语言课程设计的,主要目标是创建一个能够自我启动的计算机程序,不需要依赖现有的操作系统。设计思路是将程序分为三个段:安装程序、主引导程序和系统程序。安装程序负责将其他两个段写入指定扇区,主引导程序在启动时由BIOS的19h中断读取并执行,负责加载系统程序。详细设计中包含了具体的汇编代码段,如设置段寄存器、调用中断、读取扇区等操作。" 在这个课程设计中,我们首先了解到计算机启动的基本流程。系统初始化后,BIOS会调用中断19h,这个中断的作用是从软盘或硬盘的第一扇区(通常是MBR,主引导记录)读取512字节的数据到内存0:7c00处,并设置CS:IP寄存器指向这个地址开始执行。这个过程是计算机启动过程中的关键步骤。 接下来,设计了一个自我启动的程序,它由三个部分组成: 1. **安装程序**:它的任务是将主引导程序和系统程序写入软盘的特定扇区。这部分的代码示例展示了如何使用汇编指令将数据写入扇区,例如通过AH=3的中断13h服务。 2. **主引导程序**:位于软盘的第一扇区,由BIOS的19h中断加载到内存0:7c00执行。这个程序负责读取软盘的2-17扇区数据到内存的特定位置,通常是2000:0开始的地方,以便后续执行。 3. **系统程序**:包含了引导所需的所有程序和子程序,这些内容在启动过程中被主引导程序加载到内存。 在代码实现中,使用了不同的段寄存器(如CS:setupsg、CS:initsg和CS:syssg)来组织不同的代码段,并且使用了INT 13h中断服务进行磁盘操作,如读取扇区。例如,使用`MOV AH, 2`和`INT 13h`组合读取扇区,`MOV AH, 3`和`INT 13h`组合写入扇区。 此外,还有一个`loadsys`子程序,用于将软盘上的数据读取到内存2000:0开始的位置。这显示了在没有操作系统支持的情况下,如何直接与硬件交互以实现程序的加载和执行。 总结来说,这个课程设计涵盖了汇编语言编程的基础知识,包括段管理、中断调用、磁盘I/O操作以及自我启动程序的设计。通过这样的实践,学习者能够深入理解计算机启动过程以及如何编写底层的控制程序。