ORANGE'S之三-保护模式(3)
来源:互联网 发布:手机淘宝详情添加视频 编辑:程序博客网 时间:2024/05/01 00:38
五、端口
计算机系统中所有设备都和CPU相连,但CPU不能直接和外围设备进行交互,CPU只和每个设备的寄存器交互数据,再又寄存器把数据传给设备。
也就是
CPU对每个设备的寄存器进行编号,称为端口,CPU根据编号访问寄存器,也就是访问端口。
1、端口的读
in accum port
port:端口号 accum:AL或AX寄存器
读取port端口号到AL或AX(8位/16位)
2、端口的写
out port accum
此处accum可以是其他寄存器。
如开启A20地址线的汇编程序:
in al,92hand al 00000010bout 92h,al六、cli汇编指令
在转入保护模式前必须废除原来的中断向量表(实模式下是16位的中断向量表,而保护模式下应该是32位的中断向量表)
因此要重新建立32位的中断向量表和中断处理程序。
因此使用cli指令废除实模式下的中断向量表。
七、转入保护模式
80386提供4个32位的控制寄存器CR0-CR3
CR0:某些位用于标识是否要进入保护模式
CR1:寄存器保留,未被使用
CR2:用于分页机制
CR0寄存器的示意图如下:
其中:PE:控制分段管理机制。PE=0:处理器运行实模式,PE=1:处理器运行保护模式。
PG:分页管理机制。PG=0:禁用分页管理机制,分段管理机制产生的线性地址直接作为物理地址使用。PG=1:启用分页管理机制,线性地址经分页管理机制转换为物理地址。
下面是PE和PG组合意义:
PEPG处理器工作模式00实模式01保护模式,禁用分页机制10非法11保护模式,启用分页机制
大多数操作系统采用启用分页机制的保护模式。
在编写保护模式的代码时,我们采用禁用分页机制的保护模式,代码如下:
mov eax,cr0or eax,1mov cr0,eax其中eax是32位CPU扩展寄存器,兼容16位寄存器。
上述代码只把第一位也就是PE位置1,切换到保护模式。
- ORANGE'S之三-保护模式(3)
- ORANGE‘S之二-保护模式(1)
- ORANGE'S之二-保护模式(2)
- 《Orange’s 一个操作系统的实现》3.保护模式3----保护模式进阶
- 【orange】初识保护模式
- 《Orange's 一个操作系统的实现》读书手记3(3)--- [ 保护模式(Protect Mode)]
- 《Orange's 一个操作系统的实现》读书手记3(1)--- [ 保护模式(Protect Mode)]
- 《Orange's 一个操作系统的实现》读书手记3(2)--- [ 保护模式(Protect Mode)]
- 《Orange's 一个操作系统的实现》读书手记3(4)--- [ 保护模式(Protect Mode)]
- 《Orange’s 一个操作系统的实现》3.保护模式3----DOS加载.EXE过程
- <<orange‘s :一个操作系统的实现>>读书笔记(2) 保护模式
- 《Orange’s 一个操作系统的实现》3.保护模式2----认识保护模式A
- 《Orange’s 一个操作系统的实现》3.保护模式2----认识保护模式B
- 《Orange's 一个操作系统的实现》学习笔记(二) 实模式和保护模式
- 《Orange’s 一个操作系统的实现》3.保护模式8-页式存储
- Orange's动手写操作系统-----------第二篇:保护模式Protect Mode (学习笔记2)
- 《Orange’s 一个操作系统的实现》3.保护模式1----pm.inc分析
- 《Orange’s 一个操作系统的实现》3.保护模式4----LDT(Local Descriptor Table)
- 计算差三角
- Eclipse web工程导入到myeclipse中Tomcat不能直接部署之解决方法
- VPN拨号
- 管道
- 差分约束2
- ORANGE'S之三-保护模式(3)
- 1.S3C2440A存储器映射
- 快速开发平台的原理和实现(三)
- Hibernate多对一 的处理
- tty open call stack
- epoll回显服务器
- linux系统中的DNS服务器介绍及配置实例详解
- 面向对象的设计原则
- Linux系统中main函数的执行过程