18308045_谷正阳_实验二1
需积分: 0 101 浏览量
更新于2022-08-08
收藏 3.05MB DOCX 举报
【操作系统实验】——1.44MB软驱引导程序与COM格式用户程序
在这个实验中,学生被要求深入理解监控程序及其在操作系统中的作用,同时掌握如何设计和执行COM格式的用户程序。实验的主要目标包括:
1. 监控程序执行用户程序的主要工作流程:监控程序首先启动,接着加载用户程序到内存,执行用户程序,然后再次回到监控程序,以实现程序之间的切换和控制。
2. 用户程序格式和运行要求:COM格式是一种简单的DOS可执行文件格式,它不包含任何外部依赖,只有代码和数据。程序在内存中从0x100h地址开始执行,因此,所有代码和数据必须在这个地址之后。
3. 加载用户程序的方法:通过BIOS调用(如INT 13H)读取磁盘上的扇区,并将内容加载到内存的适当位置。例如,使用INT 13H AH=02H功能可以读取扇区。
4. BIOS调用与磁盘空间管理:BIOS提供了一系列中断调用来与硬件交互,包括磁盘操作。例如,INT 13H AH=03H用于获取磁盘参数,AH=02H用于读取扇区,AH=05H用于写入扇区。
实验内容包括以下几个步骤:
1. 修改实验一的引导扇区程序,将其转换为多个COM格式程序,每个程序在屏幕的不同区域显示信息,然后结束。这些程序被保存在1.44MB软驱映像的不同扇区中。
2. 重写软驱引导程序,使其成为一个能够执行COM格式用户程序的监控程序。监控程序应能够根据用户的选择,加载并执行任意一个或多个程序,且在执行后能返回监控程序,以便执行下一个任务。
3. 设计一个命令行接口,允许用户通过简单的命令指定执行一系列用户程序。这个系统应能接受并处理用户的连续命令。
4. 创建一个盘上信息表,记录软驱映像中的用户程序数量、位置等信息,监控程序应能显示这些信息。
5. 提高实验项目的组织管理,确保所有相关文档和源码有序存放。
实验过程中遇到的问题及解决方案:
- 在stoneN.asm程序中,边界条件未定义,导致扩展性不足,修改后解决了这个问题。
- stoneN00_not_used.asm中,程序在碰到角落时无法正确反弹,通过改进运动轨迹算法来解决。
- fillout.cpp原本只能填充首扇区,增加输入参数后,可以填充任意扇区。
- 对于myos1.asm和stoneN00.asm,理解了COM格式对偏移100h的要求,以及段寄存器的作用,修正了错误的段寄存器设置。
这个实验帮助学生深入理解了操作系统底层的工作机制,特别是引导加载过程和用户程序的执行方式,同时也锻炼了他们使用BIOS调用进行磁盘管理和程序控制的能力。