三九宝宝网宝宝百科宝宝知识

突破DOS实模式限制直接访问4GB内存

11月22日 编辑 39baobao.com

[中国驻美大使馆:美国禁止和限制入境物品清单]来美国,过海关,要注意有些违禁品千万不能带。以下是“美国禁止和限制入境物品”清单,是小编从中国驻美国大使馆官网上扒来给大家哒。赴美留学的同学们通常容易在第 1 条“食品...+阅读

PM_Service:

Mov AX,16

Mov _seg,AX

Mov EBX,CR0

And EBX,0fffffffeh

Mov CR0,EBX

DB 0eah

DW Real_Service

DW seg Real_Service

Real_Service:

Lgdt FWORD Ptr [Old_GDTR]

Popfd ;恢复现场

Popad

Pop ES

Pop DS

Jmp _Exit

MyGdt DQ 0

DW -1,0,9a00h,0

DW -1,0,9200h,0cfh

DQ 0

Old_GDTR DW 0,0,0

GDTR DW 0,0,0

_Exit:

Endm

在这里为了方便我只把FS改成4GB段,读者可以按需要自行决定使用哪个段寄存器。只要将这段代码拷贝到你的程序中,然后在开始的时候调用它,就可以通过该段寄存器直接访问大内存了,爽吧!

最后还有一点一定要注意:如果你的程序运行时有任何扩展内存管理程序存在(HIMEM、EMM386等)都要千万小心,因为很容易会破坏到它们的内部数据或其他程序的数据,如果是这样就只有死机一条路可走了。切记切记!我的建议是从内存顶端开始使用扩展内存。这时破坏其他数据的可能要小一些。

local MyGdt,PM_Service,Old_GDTR,GDTR,Real_Service,MyGdt

local _Exit

Push DS

Push ES

Pushad

Pushfd ;保护现场

Sub EBX,EBX

Mov BX,CS

Mov DS,BX

Shl EBX,4

Push EBX

Rol EBX,8

Mov BYTE Ptr MyGdt[8+7],BL

Mov BL,BYTE Ptr MyGdt[8+5]

Ror EBX,8

Mov DWORD Ptr MyGdt[8+2],EBX

Pop EBX

lea EBX,[EBX+MyGdt]

Mov DWORD Ptr [GDTR+2],EBX

Mov WORD Ptr [GDTR],31 ;建立新的GDTR

Cli

Sgdt FWORD Ptr [Old_GDTR] ;保存旧的GDTR

Lgdt FWORD Ptr [GDTR] ;设置新的GDTR

Mov EBX,CR0

Or BL,1

Mov CR0,EBX ;进入保护模式

DB 0eah

DW PM_Service

DW 8 ;跳转到保护模式代码执行|

PM_Service:

Mov AX,16

Mov _seg,AX

Mov EBX,CR0

And EBX,0fffffffeh

Mov CR0,EBX

DB 0eah

DW Real_Service

DW seg Real_Service

Real_Service:

Lgdt FWORD Ptr [Old_GDTR]

Popfd ;恢复现场

Popad

Pop ES

Pop DS

Jmp _Exit

MyGdt DQ 0

DW -1,0,9a00h,0

DW -1,0,9200h,0cfh

DQ 0

Old_GDTR DW 0,0,0

GDTR DW 0,0,0

_Exit:

Endm

在这里为了方便我只把FS改成4GB段,读者可以按需要自行决定使用哪个段寄存器。只要将这段代码拷贝到你的程序中,然后在开始的时候调用它,就可以通过该段寄存器直接访问大内存了,爽吧!

最后还有一点一定要注意:如果你的程序运行时有任何扩展内存管理程序存在(HIMEM、EMM386等)都要千万小心,因为很容易会破坏到它们的内部数据或其他程序的数据,如果是这样就只有死机一条路可走了。切记切记!我的建议是从内存顶端开始使用扩展内存。这时破坏其他数据的可能要小一些。

以下为关联文档:

如何区别服务器内存与台式机内存2内存条的容量不同。服务器的内存条容量通常是以4GB起步,服务器里面也会根据实际情况选择安装大容量的内存条,常见的单根内存条容量有4GB/8GB/16GB/32GB等;普通台式机的内存...

为什么加拿大要放宽移民限制来欢迎新移民众所周知,加拿大是世界上福利制度 * 完善的国家之一,同时也是一个传统的移民大国。移民加拿大成为众多海外人士的选择。随着自由党的上台,加拿大国内对于海外移民的接收数量也...

SQLServerSql内存不足探索sql2005 报告内存不足,我们的服务器 16G 内存,根据以往经验,这个够了,但是为什么还报告这个错误?这台服务器连接的Server 比较多,据推断可能与连接的Server 有关系;网上看到sql内...

Oracle数据库中使用超过2G的内存服务器:HPDL580G2(双CPU 6G内存)WIN2003 Enterprise Edition+ORACLE 9I 2.0.3.0 1、 首先,在boot.int中加入启动参数3G和PAE multi(0)disk(0)rdisk(0)partition(1)\WINNT="Micros...

MethodTable内存空间分配中加法运算算法在分析MethodTable具体分配内存实现的时候,看到了计算MethodTable的大小,然后分配空间的算法。其中有个加法运算实现的非常赞,特地截取出来。 所有的MethodTable的分配,都是通过...

申请内存空间,delete和delete的区别一道面试题是关于内存空间的申请 char *p=NULL; p=new char[10]; delete p; 这是道改错题,在网上看到delete后没有[]是释放数组的空间,以为这句话有错就改成 delete []p; 后还...

微机知识:让Windows系统不浪费4GB内存随着DRR2内存的疯狂降价,很多玩家都会选择升级内存来提高系统的性能。但是32位的Windows操作系统由于受到地址空间的限制,无法完整地使用4GB物理内存,很多玩家购买了4GB内存之...

Excel:微软OfficeExcel使用的种种限制Excel不是万能的,在一些方面总有限制让人觉得不爽,于是我们就看到论坛上的朋友一个劲的在那问一些Excel没有办法做到的问题,而且是你问过我问非有不问到死不罢休的架势。为了避...

用汇编编写DOS下的内存驻留程序绪言 0.1 内存驻留与中断 内存驻留程序英文叫Terminate and Stay Resident Program,缩写为TSR.这些程序加载进内存,执行完后,就驻留在内存里,当满足条件时,调到前台来执行。...

推荐阅读
图文推荐