刚才在进入dos后,编译.asm文件获得.com文件,但系统会出现:emm386:unrecoverable privileged operation error #n9.press enter to reboot.. 的显示。
在网上一搜有如下解决办法:
在dos下修改config.sys文件,将emm386那一行去掉即可。
(修改文件的命令为:edit config.sys)
但基本上没人更深究其原因,于是我有搜了一下config.sys相关内容发现原来如此:
Config.sys是用来在启动时加载系统文件的。
加载文件的命令是Device,比如每个Config.sys里都有一条命令 Device=Himem.sys ,这就是加载Himem.sys的命令。
另外,这里还可以设置Dos命令占用空间,比如DOS=High,UMB
可以设置临时文件夹,比如 Set Temp=c:/Temp
而且Config.sys和Autoexec.bat相结合,还可以制作多模式启动菜单。
一些在config.sys中经常用到的配置项目如下:
1、FILES=数字
表示可同时打开的文件数,一般可选择20到50,需要注意的是,如果把FILES的值设得过大会占用过多的基本内存。系统缺省为FILES=8。
2、BUFFERS=数字
表示设置磁盘缓冲区的数目,通常设置为20-30左右。缺省值一般为15。磁盘缓冲区是一块内存区,用于存储从磁盘读入的数据或存储写到磁盘的数据。
3、DEVICE和DEVICEHIGH
用于加载一些内存驻留程序,用于管理设备。比如内存管理程序和光驱驱动程序等。如:
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM
DEVICEHIGH=C:\CDROM\CDROM.SYS
DEVICEHIGH与DEVICE的不同是前者将程序加载入高端内存。
4、HIMEM.SYS和EMM386.EXE
DOS只能直接使用640KB的内存,即基本内存,必须依靠其他内存管理程序来使用更多的内存,这两条命令就是最常用的内存管理程序。
其中640KB到1MB之间的内存被称为高端内存,是系统保留使用的。1MB以上的内存成为扩展内存,HIMEM.SYS就是负责管理扩展内存的。
EMM386.EXE负责管理高端内存并在扩展内存中模拟扩充内存供某些软件使用。
因此为了使用更多的内存,配置文件中应有以下指令。
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM
需要注意的是:EMM386.EXE必须要求先安装HIMEM.SYS,因而必须确保安装HIMEM.SYS的配置命令在EMM386.EXE之前。
5、DOS=HIGH,UMB
一般情况下,需要CONFIG.SYS文件加入这条命令,这样会将DOS的系统文件移入高端内存,空出更多的基本内存给其他软件使用。需要注意的是,如果没有安装EMM386.EXE,UMB,那么这条指令将是无效的。
下是一个典型的CONFIG.SYS文件内容:
DEVICE=C:\DOS\HIMEM.SYS (加载himem,扩展内存管理器)
DEVICE=C:\DOS\EMM386.EXE NOEMS (高端内存并入扩展内存的工具)
BUFFERS=15,0 (缓冲区数目)
FILES=50 (同时打开的文件数)
DOS=UMB (系统把DOS本身放在什么地方)
LASTDRIVE=Z (驱动器盘符最大可以用大哪个)
DOS=HIGH
DEVICEHIGH=C:\DOS\ATAPI_CD.SYS /D:MSCD000 /I:0 (加载光驱驱动程序。)
STACKS=9,256
此外,在CONFIG中还可以配置菜单式多重任务选择的配置,用于不同任务的选择,比如玩游戏、设置虚拟磁盘等,不过在这些应用在目前已经不常用了,这里就不多做介绍了。
一个小小的错误背后居然有如此之丰富的内容,值得深思。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xmas106350/archive/2010/08/02/5783696.aspx