1实验环境的使用
一、实验背景
(1)实验目的:
1、跟踪调试 EOS 在 PC 机上从加电复位到成功启动的全过程,了解操作系统的启动过程。 2、查看 EOS
启动后的状态和行为,理解操作系统启动后的工作方式。
(2)预备知识:
阅读本书第 3 章,了解 EOS 操作系统的启动过程。阅读第 2 章中的第 2.4 节,复习汇编语言的相关知识,并掌握 NASM
汇编代码的特点。阅读附录 A,了解 Bochs 和 Virtual PC 这两款虚拟机软件的特点,重点熟悉 Bochs 的调试命令。
二、实验主要过程与结果
(1)准备实验:
- 启动 OS Lab。
- 新建一个 EOS Kernel 项目。
- 在“项目管理器”窗口中打开 boot 文件夹中的 boot.asm 和 loader.asm 两个汇编文件。boot.asm
是软盘引导扇区程序的源文件,loader.asm 是 loader 程序的源文件。简单阅读一下这两个文件
中的 NASM 汇编代码和注释。 - 按 F7 生成项目。
- 生成完成后,使用 Windows 资源管理器打开项目文件夹中的 Debug 文件夹。找到由 boot.asm 生
成的软盘引导扇区程序 boot.bin 文件,该文件的大小一定为 512 字节(与软盘引导扇区的大小
一致)。找到由 loader.asm 生成的 loader 程序 loader.bin 文件,记录下此文件的大小 1566 字
节,在下面的实验中会用到。找到由其它源文件生成的操作系统内核文件 kernel.dll。
(2)调试 EOS 操作系统的启动过程:
1、将调试时使用的远程目标机修改为 Bochs;
2、调试 BIOS 程序:
启动调试后,Bochs 在 CPU 要执行的第一条指令(即 BIOS 的第一条指令)处中断。 此时,Display
窗口没有显示任何内容,Console 窗口显示要执行的 BIOS 第一条指令的相关信息,并等待用户输入调试命
令,如图2-2-1所示
在 Console 窗口中输入调试命令 sreg 后按回车,显示当前 CPU 中各个段寄存器的值,如图 2-2-2。其中 CS 寄存器信息行中的“s=0xf000”表示 CS 寄存器的值为 0xf000。
输入调试命令 r 后按回车,显示当前 CPU 中各个通用寄存器的值,如图2-2-3。其中“rip:0x00000000:0000fff0”表示 IP 寄存器的值为 0xfff0。