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来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)