返回主页

 

EMM386.EXE


提供对上端内存区的访问并用扩展内存来模拟扩充内存。此设备驱动程序必须在CONFIG.SYS文件用<DEVICE>命令来装入。且只能用于80386或更高档处理器的计算机上。

EMM386用扩展内存来模拟扩充内存,以便程序能够使用扩充内存。EMM386也可将程序和设备驱动程序装入上端内存块(UMB)



语法 :

DEVICE=[drive:][path]EMM386.EXE [ON|OFF|AUTO] [memory] [MIN=size]
[W=ON|W=OFF] [Mx|FRAME=address|/Pmmmm] [Pn=address] [X=mmmm-nnnn]
[I=mmmm-nnnn] [B=address] [L=minXMS] [A=altregs] [H=handles] [D=nnn]
[RAM=mmmm-nnnn] [NOEMS] [NOVCPI] [HIGHSCAN] [VERBOSE] [WIN=mmmm-nnnn] [NOHI] [ROM=mmmm-nnnn] [NOMOVEXBDA] [ALTBOOT]


参数 :

[drive:][path]
指定EMM386.EXE文件的路径。

[ON|OFF|AUTO]
激活EMM386设备驱动程序(如果设置为ON),或中止EMM386设备驱动程序(如果设置为OFF),或使EMM386设备驱动程序处于自动方式(如果设置为AUTO)。自动方式下只当程序调用设备驱动程序时,才允许扩充内存支持和上端内存块支持。默认设置为ON。在启动EMM386之后可用EMM386命令来改变此设置。

memory
指定扩展内存最大存储容量(KB),EMM386将把此部分扩展内存用作扩充/虚拟控制程序接口(EMS/VCPI)内存。此处指定的扩展内存不包括用于UMB及EMM386本身的那部分内存。内存容量的取值在64到32768,或在64到装入EMM386时可用的扩展内存容量之间。其默认值为自由扩展内存的数量。如果指定了NOEMS,则默认值为0。EMM386将向下取一个最接近的16的倍数值。




开关项 :

MIN=size
指定EMM386将提供的最小EMS/VCPI可用内存的数量(KB)。在CONFIG.SYS文件中用DEVICE=EMM386.EXE命令装入EMM386后,EMM386将把此数量的扩展内存留作EMS/VCPI内存。当一程序请求EMS/VCPI内存时,如果有足够的XMS内存,那么EMM386可提供额外的EMS/VCPI内存(可达到由MEMORY参数指定的内存量)。其取值范围在0到由MEMORY参数指定的数值之间,默认值为256。若指定了NOEMS开关,则默认值为0。如果MIN的值大于MEMORY的值,则EMM386将采用由MIN指定的值。

W=ON|W=OFF

允许或禁止对Weitek协处理器的支持,默认设置为W=OFF。

Mx
指定页帧的地址。x的取值范围为1-14。下表列出了每个值及其相应的基址(十六进制格式):

1 => C000h 8 => DC00h
2 => C400h 9 => E000h
3 => C800h 10 => 8000h
4 => CC00h 11 => 8400h
5 => D000h 12 => 8800h
6 => D400h 13 => 8C00h
7 => D800h 14 => 9000h


10-14之间的值只能用于带512K内存的计算机。

FRAME=address
直接指定页帧的段基址。若要为页帧指定一特定的段基址,则可用FRAME开关指定一地址。地址的取值范围在8000h-9000h和C000h-E000h之间,其增量为400h。若要提供扩充内存并禁止页帧,可指定FRAME=NONE;不过这可能引起某些请求扩充内存的程序不能正常工作。

/Pmmmm
指定页帧的地址。mmmm取值范围在8000h-9000h和C000h-E000h之间,其增量为400h。

Pn=address
指定某一特定页的段地址,n是指定的页号,address是指定的段地址。n的取值范围在0-255之间。address的取值范围在8000h到9C00h和C000h到EC00h之间。为了保持与Lotus/Intel/Mirosoft扩充内存规范(LIM EMS)版本3.2的兼容性。页0到3的地址必须邻接的。如果使用了Mx开关、FRAME开关或/Pmmmm开关,那就不能为/Pmmmm开关指定页0到3的地址。

X=mmmm-nnnn

禁止EMM386把某一特殊的范围的段址用于某一EMS页或UMB。mmmm与nnnn的取值范围在A000h-FFFFh之间,且其值将向下取最接近于4K倍数的值。若X开关及I开关指定的范围重复,则X开关具有更高的优先级。

I=mmmm-nnnn

指定将用于(包含于)某一EMS页或UMB的段址范围。mmmm与nnnn的取值范围在A000h-FFFFh之间,且其值将向下取最接近4K的倍数值。若X开关及I开关指定的范围重复,则X开关具有更高的优先级。

B=address
指定可用于EMS“转储”(16K个页的对换)的最低段址。此地址的取值范围在1000h到4000h之间。默认值为4000h。

l=minXMS
保证在装入EMM386之后,保留指定大小(单位K)的扩展内存。默认值为0。

A=altregs

指定将有多少快速的变换寄存器组分配给EMM386。其取值范围在0到254之间。默认值为7。每个变换寄存器组将使EMM386内存大小增加200个字节。


H=handles
指定EMM386可用的句柄数。其取值范围在2到255之间。默认值为64。

D=nnn
指定应保留多少K的内存用于缓冲的直接内存存取(DMA)。酌减软磁盘DMA,此值就反映激活EMM386时,将发生的最大DMA传输。nnn的取值范围在16到256之间。默认值为16。

RAM=mmmm-nnnn
指定要用于UMB的段址范围,并允许EMS支持。如果不指定一范围,则EMM386将用所有可用的适配器空间来为EMS建立UMB及一页框。

NOEMS
提供对上端内存区的存取但禁止对扩充内存的存取。

NOVCPI
禁止对VCPI应用程序的支持。此开关必须与NOEMS开关一起使用。如果你指定了MOVCPI开关而没有指定NOEMS开关,那么EMM386将不禁止VCPI支持。如果两个开关都指定了,则EMM386将忽略MEMORY参数及MIN开关。禁止对VCPI应用程序支持将减少所分配的扩充内存大小。

HIGHSCAN
指定EMM386用另外的检测方法,来确定将用作UMB或EMS窗口的上端内存区的可用性。在某计算机上,指定此开关后可能并不会产生什么影响,不过也可能使EMM386把并不可用的高内存区标识成可用的。这样,你的计算机将停止与用户的交互作用。

VERBOSE
当进行EMM386安装时,指示EMM386显示状态及错误信息。默认时EMM386只在遇到错误时才显示信息。你可把VERBOSE缩写为V。(要想显示状态信息而不加VERBOSE开关,只需在EMM386启动和装入时按住ALT键即可。)

WIN=mmmm-nnnn
保留指定范围的段址以用于Windows而不是EMM386。mmmm与nnnn的取值范围在A000h到FFFh之间,且向下取最接近的4K倍数的值。如果X开关与WIN开关指定的范围冲突的话,则X开关的指定优先。在范围冲突的情况下,WIN开关优先于RAM、ROM及I开关。

[NOHI]
禁止EMM386装入到上端内存区。一般来说,部分EMM386将装入上端内存区。指定此开关后将减少可用的常规内存大小,但增加了可用于UMB的上端内存区的大小。

[ROM=mmmm-nnnn]
指定ENN386要用于影像RAM的段址范围。影像RAM即是用于只读存储器(ROM)的随机存取存储器。mmmm与nnnn的取值范围在AOOOH到FFFh之间,且其值将向下取一个最接近4K倍数的值。如果你的系统没有影像RAM,那么指定此开关后将会加速你的系统速度。

[NOMOVEXBDA]
禁止EMM386把常规内存的扩展BIOS数据移到上端内存区。

[ALTBOOT]
指定当你按下CTRL+ALT+DEL时EMM386将用一备用处理程序来启动你的计算机。只有当装入EMM386且按下CTRL+ALT+DEL时,计算机未作出任何反应或出现其它不寻常的现象才需使用此开关。


EMM386.EXE─注解

 

共享XMS及EMS内存

EMM386通过把XMS内存转换为EMS/VCPI内存而向程序提供其所请求的EMS/VCPI内存。当装入EMM386时,EMM386将保留由MIN开关所指定的内存大小用于EMS/VCPI内存(默认值 为256K)。一旦保留了此数量的XMS内存,那么它将始终可用作EMS/VCPI内存而不用作XMS内存。EMM386可把另外数量的XMS内存转换为EMS/VCPI内存,其大小可为由MEMORY参数指定的。对于此处额外数量的XMS内存,如不再需把它作为EMS/VCPI内存,那么EMM386会再把它释放XMS内存。

若指定MIN=0,则EMM386将不保留任何XMS内存用作EMS/VCPI内存。而只有当一程序请求XMS内存时,它才把XMS内存转换为EMS/VCPI内存。当程序不再需要EMS/VCPI内存时,EMM386再把它释放给XMS内存。然而,如果程序请求内存时所有的XMS内存都已分配完毕,则EMM386将不再能向程序提供所请求大小的EMS/VCPI内存。



在EMM386.EXE前必须安装HIMEM.SYS

在EMM386.EXE的DEVICE命令前,必须在CONFIG.SYS文件中给出HIMEM.SYS设备驱动程序的DEVICE命令。



使用EMM386内存开关


除非你想用ENN386来提供对上端内存区的存取,否则你就没必要在DEVICE命令行上指定内存开关。EMM386一般利用默认值就可运行正常。然而,在某些情况下你可能想控制EMM386如何来使用内存。例如,你可控制EMM386把EMS页帧放在何处,或哪个段用EMS页。这些内存开关可任意组合使用。

注意:使用EMM386.EXE参数一定要小心,如果你使用不当的话则可能造成计算机的混乱。



用EMM386来提供对上端内存区的存取


EMM386除了可提供对扩充内存的存取之外,还可提供对上端内存区的存取,从而你可用它装载某些程序和设备驱动程序。你一定要用RAM或NOEMS开关来提供对上端内存区的存取。

用NOEMS开关可使MS-DOS只存取上端内存而不存取扩充内存;用RAM开关可使MS-DOS既可存取上端内存区也可存取扩充内存。RAM开关所所提供的用来运行设备驱动程序及应用程序的上端内存区要比NOEMS开关小。无论在那种情况,在CONFIG.SYS文件中都一定要给出DOS=UMB命令。EMM386.EXE的设备命令一定要先于任何DEVICEHIGH命令。



EMM386用于Windows 3.1

当EMM386用于Windows3.1时、I、X、NOEMS、MX、Pnnnn及FRAME各开关将优先于Windows SYSTEM.INI文件中的EMMINCLUDE、EMMEXCOLUDE及EMMPAGEFRAME设置。当装入EMM386时,SYSTEM.INI文件中这些设置即使发生什么变化,也不会产生什么影响。



可能要求SMARTDRV加倍缓冲以使用EMM386

如果你具有小型计算机系统接口(SCSI)或增强型系统设备接口(ESDI)硬盘或其它设备,那么在CONFIG.SYS文件中加入下面的命令行:

device=smartdrv.exe /double_buffer


此命令行要先于任何DEVICEHIGH语句以及安装需使用扩充内存的设备驱动程序的语句。此语句允许SCSI或EDSI控制器来把信息传送给使用上端内存区或扩充内存的程序。


EMM386.EXE─例子


为了将EMM386作为扩充内存模拟器来启动,可使用默认值,在CONFIG.SYS文件中加入下面的语句:

device=himem.sys
device=emm386.exe

由于没指定位置,故MS-DOS将在启动驱动器的根目录中查找EMM386.EXE。

为了使EMM386分配最大数量的4096K的内存及256K的保证内存(默认值),并指明EMM386.EXE文件位于驱动器C上的DOS目录,那么在CONFIG.SYS文件中加入下列行:

device=c:\dos\emm386.exe 4096

为了模拟扩充内存,指定EMS页帧的段基址为DOOOh,并分配512K的内存给EMM386,那么要用下面的命令行:

device=emm386.exe 512 frame=d000

device=emm386.exe 512 p0=d000 p1=d400 p2=d800 p3=dc00

假设除了指定上述命令的条件设置外,你还想禁止EMM386使用EOOOh到ECOOh之间的段址,且指定EMM386可用127个句柄,需在CONFIG.SYS文件中加入下列命令行:

device=emm386.exe 512 frame=d000 x=e000-ec00 h=127

为了提供对上端内存区的存取但不对EMS/VCPI内存存取,需在CONFIG.SYS文件中加入下面的命令行:

device=emm386.exe noems novcpi

为了提供对上端内存区的存取并提供EMS/VCPI内存,则在CONFIG.SYS文件中要加入下面命令行:

device=emm386.exe ram


返回主页