实模式
概述
- 实模式又称
地址模式
,实,即真实 - 真实分为两个方面
- 运行真实的指令,对指令的动作不作区分,直接执行指令的真实功能
- 发往内存的地址是真实的,对任何地址不加限制地发往内存
实模式寄存器
寄存器(16位) | 描述 |
---|---|
AX、BX、CX、DX、DI、SI、BP | 通用寄存器,里面可以存放数据、地址、参与运算 |
IP | 程序指针寄存器,始终指向下一条指令的地址 |
SP | 栈指针寄存器 |
CS、DS、ES、SS | 段寄存器,里面存放一个内存段的基地址 |
FLAGS | CPU标志寄存器,里面存放CPU执行运算指令产生的状态位 |
实模式下访问内存
-
- 上图所示,所有内存地址都是由段寄存器左移4位,再加上一个通用寄存器中的值或者常数形成地址
- 然后由这个地址去访问内存,这就是分段内存管理模式
物理地址 = 段地址 * 16 + 偏移地址
实模式中断
中断的含义
- 中断即中止执行当前程序,转而跳转到另一个特定的地址上,去运行特定的代码
中断方式
- 中断控制器给CPU发送了一个电子信号,CPU会对这个信号作出应答。随后中断控制器会将中断号发送给CPU,这是
硬件中断
- CPU执行了
INT指令
,这个指令后面跟随一个常数,这个常数即是软件中断号
,这种情况是软件中断
- 无论是硬件中断还是软件中断,都是CPU响应外部事件的一种方式
中断流程
-
为了实现中断,就需要在内存放一个中断向量表,这个表的地址和长度由CPU的特定寄存器IDTR指向
-
实模式下,表中的一个条目由代码段地址和段内偏移组成
-
有了中断号以后,CPU就能根据IDTR寄存器中的信息,计算出中断向量中的条目,进而装载CS(装入代码段基地址)、IP(装入代码段内偏移)寄存器,最终响应中断