ORANGE'S之三-保护模式(3)

五、端口

        计算机系统中所有设备都和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,92h
and al 00000010b
out 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,cr0
or eax,1
mov cr0,eax
        其中eax是32位CPU扩展寄存器,兼容16位寄存器。

        上述代码只把第一位也就是PE位置1,切换到保护模式。         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值