Lab1 系统引导
俞星凯 171830635
实验目的
1.学习在 Linux 环境下编写、调试程序,初步掌握 Shell、 Vim、GCC、Binutils、
Make、QEMU、GDB 的使用。
2.学习 AT&T 汇编程序的特点。
3.理解系统引导程序的含义,理解系统引导的启动过程。
实验内容
从实模式切换至保护模式,在保护模式下读取磁盘 1 号扇区中的 Hello World 程
序至内存中的相应位置,跳转执行该 Hello World 程序,并在终端中打印 Hello,
World!
实验过程
1.实模式切换保护模式
在系统启动时首先进入 8086 的实模式,但是由于实模式下的安全问题和其分段
机制的问题,在 80386 中引入了保护模式,本次实验中模拟了 8086 实模式到
80386 保护模式的切换。
首先使用 cli 关闭中断,接着启动 A20 地址线,然后加载 GDTR 寄存器,接着设
置 CR0 寄存器的 PE 位为 1 启动保护模式,最后长跳转切换至保护模式。
这里有两点值得注意:一是启动 A20 地址线的原因,如果 A20 地址线未开,那
么地址的第 20 位永远为 0,导致地址空间不连续。二是 CS 的设置我们是通过长
跳转指令实现的,因为 CS 不可直接修改。
评论0