自己写操作系统2??进入保护模式
作者:网络转载 发布时间:[ 2013/12/16 9:31:30 ] 推荐标签:
实模式下不能访问1M以上的内存,而且实模式不能提供内存保护。
启示开启实模式只要3个步骤
1.设置gdt全局描述符表
2.设置a20开始访问1M以上内存的必须步骤
3.设置cr0的pe为1,这个表明已经进入了保护模式中。
;
;protect.ASM
;
;
;
SECTION ALIGN=16 VSTART=0x7E00
MOV AX , [cs:SS_BASE]
MOV SS , AX
XOR SP , SP
MOV AX , [cs:DS_BASE]
MOV DS , AX
MOV BX , 0x7C00
;创建#1描述符,保护模式下的代码段描述符
mov dword [bx],0x0
mov dword [bx+0x04],0x0
;创建#1描述符,保护模式下的代码段描述符
mov dword [bx+0x08],0x7e0001ff
mov dword [bx+0x0c],0x00409800
;创建#2描述符,保护模式下的数据段描述符(文本模式下的显示缓冲区)
mov dword [bx+0x10],0x8000ffff
mov dword [bx+0x14],0x0040920b
;创建#3描述符,保护模式下的堆栈段描述符
mov dword [bx+0x18],0x00007a00
mov dword [bx+0x1c],0x00409600
;创建#4描述符,保护模式下的代码段描述符
mov dword [bx+0x20],0x7e0001ff
mov dword [bx+0x24],0x00F09800
;创建#5描述符,保护模式下的数据段描述符(文本模式下的显示缓冲区)
mov dword [bx+0x28],0x8000ffff
mov dword [bx+0x2C],0x00F0920b
;创建#6描述符,保护模式下的堆栈段描述符
mov dword [bx+0x30],0x00007a00
mov dword [bx+0x34],0x00F09600
mov bx , GDT_SIZE
mov word [bx] , 47
mov dword [bx+2], 0x7C00
lgdt [bx]
in al , 0x92
or al , 0000_0010B
out 0x92,al
cli
mov eax , cr0
or eax , 0x01
mov cr0 ,eax
jmp dword 0x0008:(PROTECT_BEGIN-0x7E00)
DS_BASE DW 0x0000
SS_BASE DW 0x2000
[bits 32]
ZERO_SECTOR DD 0x0,0x0
CS_SECTOR DD 0x0,0x0
DS_SECTOR DD 0x0,0x0
SS_SECTOR DD 0x0,0x0
CS_DPL3_SECTOR DD 0x0,0x0
DS_DPL3_SECTOR DD 0x0,0x0
GDT_SIZE DW 0x00
DGT_BASE DD 0x00000000
PROTECT_BEGIN:
mov ax , 16
mov ds , ax
mov byte [0] , 'P'
mov byte [1] , 0x07
mov byte [2] , 'r'
mov byte [3] , 0x07
mov byte [4] , 'o'
mov byte [5] , 0x07
mov byte [6] , 't'
mov byte [7] , 0x07
mov byte [8] , 'e'
mov byte [9] , 0x07
mov byte [10] , 'c'
mov byte [11] , 0x07
mov byte [12] , 't'
mov byte [13] , 0x07
jmp $
times 512 - ($-$$) db 0
|
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
浅谈操作系统对内存的管理HBase佳实践??用好你的操作系统选择适合Rails开发的操作系统三问:Linux操作系统安全加固卡巴斯基面向物联网设备发布专用操作系统卡巴斯基正式推出操作系统:非Linux,主打安全,秘研14年Linux以外的7种开源操作系统现代操作系统 - 存储设备看操作系统对程序的执行过程有哪些支持谷歌正开发融合操作系统Fuchsia,真的有必要吗?iOS在印度连第二名都排不上 本土操作系统太强大了解决Linux操作系统下AES解密失败的问题如何保护你的Linux操作系统?谷歌:安卓操作系统前景不容乐观韩国发布自主操作系统TmaxOS:兼容安卓、iOS和Windows摆脱安卓/WP依赖,华为将做自主操作系统
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南