实模式与保护模式切换实例
日期:2007年11月6日 作者: 查看:[大字体 中字体 小字体]-
ASSUME CS:CSEG1,DS:DSEG
;----------------------------------------------------------------------------
Start PROC
mov ax,DSEG
mov ds,ax
;准备要加载到GDTR的伪描述符
mov bx,16
mul bx
add ax,OFFSET GDT ;计算并设置基地址
adc dx,0 ;界限已在定义时设置好
mov WORD PTR VGDTR.Base,ax
mov WORD PTR VGDTR.Base+2,dx
;设置32位代码段描述符
mov ax,CSEG2
mul bx
mov WORD PTR Code32.BaseL,ax
mov BYTE PTR Code32.BaseM,dl
mov BYTE PTR Code32.BaseH,dh
;设置16位代码段描述符
mov ax,CSEG3
mul bx
mov WORD PTR Code16.BaseL,ax ;代码段开始偏移为0
mov BYTE PTR Code16.BaseM,dl ;代码段界限已在定义时设置好
mov BYTE PTR Code16.BaseH,dh
;设置堆栈段描述符
mov ax,ss
mov WORD PTR SaveSS,ax
mov WORD PTR SaveSP,sp
mov ax,StackSeg
mul bx
mov WORD PTR Stacks.BaseL,ax
mov BYTE PTR Stacks.BaseM,dl
mov BYTE PTR Stacks.BaseH,dh
;加载GDTR
lgdt QWORD PTR VGDTR
cli ;关中断
EnableA20 ;打开地址线A20
;切换到保护方式
mov eax,cr0
or al,1
mov cr0,eax
;清指令预取队列,并真正进入保护方式
JUMP16 Code32_Sel,<OFFSET SPM32>
ToReal: ;现在又回到实方式
mov ax,DSEG
mov ds,ax
mov sp,SaveSP
mov ss,SaveSS
DisableA20
sti
mov ax,4c00h
int 21h
Start ENDP
;----------------------------------------------------------------------------
CSEG1 ENDS ;代码段定义结束
;----------------------------------------------------------------------------
CSEG2 SEGMENT USE32 'PM32'
ASSUME CS:CSEG2
;----------------------------------------------------------------------------
SPM32 PROC
mov ax,Stacks_Sel
mov ss,ax
mov esp,StackLen
mov ax,DataS_Sel
mov ds,ax
mov ax,DataD_Sel
mov es,ax
xor esi,esi
xor edi,edi
mov ecx,DataLen
cld
Next: lodsb
push ax
CALL ToASCII
mov ah,7
shl eax,16
pop ax
shr al,4
CALL ToASCII
mov ah,7
stosd
mov al,20h
stosw
loop Next - 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] 下一页
-
- 实模式与保护模式切换实例 相关文章:
- ·格言警句:诚实做人格言
- ·女人们听好了:其实色狼都是好男人
- ·Excel XP函数实用教程精华集
- ·电脑高手必备 Windows系统35招实用技巧
- ·学生成绩管理系统实习
- ·如何实现局域网打印机共享
- ·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
- ·精彩推荐:全Flash网站制作实例
- ·FLASH 8实例教程:瀑布动画制作方法
- ·摄影师镜头下的百姓真实生活
- 实模式与保护模式切换实例 相关软件
- ·实况世界杯2002 中文版
- ·《实况足球胜利11人》GBA中文版
- ·Turbo C/C++ for Windows 集成实验与学习环境 V2007.9.0
- ·疯狂机器3之新实验
- ·Photoshop视频实例教程系列电子书 V1.0
- ·《实况足球8》国际版免CD补丁
- ·实况足球10欧洲版
- ·韩国语实用语法
- ·实况足球9 游戏汉化补丁
- ·AutoCAD 实战妙技百问 VB051118
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:纯DOS下无需加载MSCDEX,直接弹出或关闭CD-ROM舱
下一篇:汇编指令与机器码的相互转换
精品推荐
热点TOP10
- ·图象处理中的边缘检测------canny算子
- ·DENX U-Boot及Linux使用手册
- ·UDT协议-基于UDP的可靠数据传输协议
- ·EZ-USB 68013A开发指南
- ·利用 wordXP 实现自动排班
- ·DDK 学习经验
- ·利用Haffman 算法实现对ascii字符文件的压缩
- ·实模式与保护模式切换实例
- ·在Solaris 10 X86上安装Oracle 10g RAC详解 (1)
- ·[仿真实验]操作系统的内存管理
- ·飞机躲避小游戏---是男人就撑100秒的制作
- ·扩展Int 13H调用规范
- ·小议char *和C语言的字符串
- ·跟我一起写 Makefile
- ·[收藏]Web2.01,a rich internet application example
- ·视频与图像RGB/YUV格式详解
- ·Visual C++ ADO数据库编程入门
- ·交换机MAC地址表的形成过程动态演示
- ·基于VC的WinSock网络编程实用宝典
- ·三维粒子系统在AS2中的实现
特别推荐
- ·Symbian系统入门
- ·基于VC的WinSock网络编程实用宝典
- ·扩展Int 13H调用规范
- ·列出System.getProperty的所有返回值
- ·Linux2.4.18内核下基于LKM的系统调用劫持
- ·控件“树”中多选拖放功能的实现
- ·[分形]DLA团簇模型的摸拟
- ·samba和openldap结合实战
- ·教程:XSLT Designer快速入门指南
- ·设计面向Pocket PC浏览器的Web站点
- ·利用Haffman 算法实现对ascii字符文件的压缩
- ·跟我一起写 Makefile
- ·三维粒子系统在AS2中的实现
- ·汇编源码--DOSSYM
- ·消息报文处理组件(C/C++版)
- ·UDT协议-基于UDP的可靠数据传输协议
- ·利用 wordXP 实现自动排班
