###第三章

因为引导扇区空间有限,所以借用Freedos的引导扇区,通过Freedos来调试程序。

从实模式跳转为保护模式的步骤:

  1. 将DESC_CODE32初始化
  2. 把GDT的物理地址填充到GdtPtr中
  3. 将GdtPtr指示的6字节加载到gdtr
  4. 打开A20地址线
  5. 将cr0的第0位置置为0
  6. 跳转至保护模式

GDT/LDT均为描述表。

特权级由CPL、DPL、RPL三者控制。

代码段之间的转移分为两类:

  1. 通过JMP和CALL直接转移
  2. 通过某个描述符间接转移

分页机制:物理地址 = f(线性地址)

可以调用中断15H来知道机器有多少内存。

异常:

  1. Fault 可更正的异常,一旦更正产生,程序可以不失连续性地继续执行,Fault之前的状态会被保存,返回地址为产生Fault的指令。
  2. Trap 发生在trap命令执行之后立即被报告的异常,它也允许程序或任务不失连续性地执行,返回地址为产生Trap之后的指令。
  3. Abort 不总是报告精确异常位置发生的异常,它不允许程序或任务继续执行,而是用来报告严重错误的。

发送中断:
OCW1:被写入IMR 判断此终端是否应被丢弃。
EOI:每次中断处理结束 发送一个EOI给8259A,以便继续接受中断。