实模式
Last updated
Last updated
8086为16位CPU,有16位的寄存器(Register),16位的数据总线(Data Bus),20位的地址总线 (Address Bus),寻址能力为1MB。
8086 的寄存器集合
通用寄存器(16 位):AX,BX,CX,DX,SP,BP,DI,SI
段寄存器(16 位):CS,DS,SS,ES
状态和控制寄存器(16 位): FLAGS,IP
寻址空间与寻址方式
采用实地址空间进行访存,寻址空间为 2^20
物理地址 = 段寄存器 << 4 + 偏移地址
举个例子:CS=0x0000:IP=0x7C00
和 CS=0x0700:IP=0x0C00
以及 CS=0x7C0:IP=0x0000
所寻地址是完全一致的
8086的中断
中断向量表存放在物理内存的开始位置(0x0000
至0x03FF
)
最多可以有 256 个中断向量
0x00
至 0x07
号中断为系统专用
0x08
至 0x0F
,0x70
至 0x77
号硬件中断为 8259A 使用
8086的中断处理是交给BIOS完成的,实模式下可以通过 int $0x10 中断进行屏幕上的字符串显示,具体细节请参考BIOS中断向量表或自行查找资料。
实模式或者说8086本身有一些缺点:
安全性问题
程序采用物理地址来实现访存,无法实现对程序的代码和数据的保护(划重点)
一个程序可以通过改变段寄存器和偏移寄存器访问并修改不属于自己的代码和数据
分段机制本身的问题
段必须是连续的,从而无法利用零碎的空间
段的大小有限制(最大为 64KB)
,从而限制了代码的规模
因为一些问题,我们需要开启保护模式......请看下节。