操作系统实验:制作IPL与错误处理

需积分: 7 1 下载量 44 浏览量 更新于2024-09-10 收藏 844KB DOCX 举报
"30天操作系统1-2的实验报告主要涵盖了制作真正IPL、试错机制以及读取多个扇区的内容。实验旨在深入理解操作系统的启动过程、BIOS调用以及错误处理策略。" 实验内容详细说明: 1. 制作真正的IPL (Initial Program Load): - 在实验中,你需要创建一个能够加载实际操作系统的IPL。在之前的实验中,虽然编译出的ipl.nas文件能执行基本操作,但它并未装载任何实际的操作系统代码。 - 新的学习点包括了指令`JCerror`,它是一个条件跳转指令,当进位标志位CF为1时执行跳转,常用于错误处理。 - `MOVAH, 0x02`用于设定BIOS的读盘操作,`MOVAL, 1`设置读取的扇区数为1。 - 使用`INT 0x13`调用BIOS的0x13号中断服务,这个中断用于磁盘I/O操作,如读写扇区。 - 寄存器`CH`、`CL`、`DH`、`DL`分别对应柱面号、扇区号、磁头号和驱动器号,它们共同确定了要读取的数据在硬盘的位置。 - 启动区通常被加载到柱面0,磁头0,扇区1的位置,即C0-H0-S1。 - 缓冲区地址是指数据被读取到内存的起始位置,通过EBX寄存器的值扩展,允许访问4GB的内存空间。 2. 试错机制: - 实验中引入了`JAE`和`JNC`两条指令,它们分别在进位标志位CF为0或非1时执行跳转,用于处理读取错误的情况。 - 设置了一个试错次数,如果超过这个次数,程序会跳转到error处理部分,否则会尝试重新读取扇区,实现自动错误恢复。 3. 读取多个扇区: - 在实验的最后阶段,扩展了读取扇区的功能,不再只读取一个扇区,而是读取到第18扇区,这有助于加载更大的操作系统片段或数据。 通过这个实验,你将深入理解操作系统的启动流程,BIOS中断服务的使用,以及如何处理读取错误。同时,你还将学会如何扩展IPL以读取更多的磁盘数据,这对于构建一个完整操作系统至关重要。这些知识对于理解计算机硬件与软件交互的基本原理非常有帮助。