• Phar Lap err 83:DPMI lock of code/data for HW interrupt handlers failed


    在VMware16下,安装Dos6.22版本,Masm6.11版本,Vim7.3版本。在通过Vim编辑完成汇编程序后,通过Vim的:!进入Dos Shell后,ml first.asm 后会出现:Phar Lap err 83:DPMI lock of code/data for HW interrupt handlers failed的错误,再次进入会导致Dos死机。通过在Config.sys中加入Emm386内存管理后,问题解决。

    Dos下的内存加载,常用的配置如下,如需学习详细的知识,可访问:http://manmrk.net/tutorials/DOS/msdos622/help/INDEX.HTM#y进行参考。

    1、DEVICE=[drive:][path]HIMEM.SYS 

    参数:/TESTMEM:ON|OFF,是否进行内存测试。

    参数:/VERBOSE,是否显示加载状态及相关细节。

    2、EMM386 [ON|OFF|AUTO] [W=ON|W=OFF]

    参数:RAM=mmmm-nnnn,本参数表示同时建立UMB和EMS存储器,不指定大小则默认占用剩余空间。

    参数:NOEMS,提供UMB存储器,但不建立EMS存储器。

    3、在Autoexec.bat中运行smartdrv.exe,建立磁盘读写缓存。

    4、DOS=HIGH/LOW,表示把DOS核心部分装入UMB(选HIGH),还是装入基本内存(选LOW)。缺省值为LOW,一般应选HIGH。

      DOS=UMB/NOUMB,表示DOS将与UMB建立联系(选UMB)或不准许使用UMB(选NOUMB)。一般应选UMB。可把两行命令合为一行,参数间用逗号间隔。

      在系统启动时,DOS自动设置缓冲区数目Buffers的值为15,每个Buffers占523字节。随着DOS=HIGH的执行,Buffers也随DOS的核心程序移到HMA中,这当然是好事,但是如果用户自己设定的Buffers太大,如超过47个,则HMA装入DOS核心后的剩余空间无法容纳,就把全部Buffers移至基本内存中,这将得不偿失。

    5、DEVICE=[drive:][path]RAMDRIVE.SYS [DiskSize SectorSize [NumEntries]]] [/E | /A] 用内存建立虚拟磁盘。

    参数:/A 表示在EMS(expanded memory,扩充内存)中使用。
    参数:/E 表示在XMS(extended memory,扩展内存)中使用。

    EMS是最早突破1M内存的解决方案,但使用起来麻烦且效率不高,后来微软搞出XMS解决方案(HIMEM),但为了兼容使用EMS编写的软件,所以通过一些方法,如EMM386来模拟一个EMS来。

  • 相关阅读:
    mysql基础
    协程
    锁与队列
    线程练习
    线程
    并发编程
    进程
    操作系统发展史
    第六周----例行报告
    附加题找bug
  • 原文地址:https://www.cnblogs.com/meizhouxiang/p/14684936.html
Copyright © 2020-2023  润新知