![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 19:45 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » Dos如何能让程序使用到xms的内存 |
| 可打印版本 1,359 / 2 |
| 第1楼 liyangwyh | 发表于 2007-06-12 17:21 |
| 初级用户 发帖 24 积分 72 | |
|
Dos如何能让程序使用到xms的内存 请问各位,我一个程序有3百多K了,再调用别的程序就出现内存不足的问题,请Dos如何能让程序使用到xms的内存
|
|
| 第2楼 firstsail | 发表于 2007-06-12 17:50 |
| 高级用户 发帖 295 积分 668 来自 广东深圳 | |
|
关于XMS内存,可以这样获得
(1)通过使用WinSail V2.0的XMS管理模块,类名为CXmsMemroy获得 (2)直接访问XMS,参照XMS扩展内存规范! void far *pXmsVector = NULL; //XMS管理程序入口地址 //...... union REGS mRegs; struct SREGS mRegSegs; mRegs.x.ax = 0x4310; int86x(0x2F, &mRegs, &mRegs, &mRegSegs); //注意int 是16位整数 *(((unsigned int far *)&pXmsVector) + 0) = mRegs.x.bx; *(((unsigned int far *)&pXmsVector) + 1) = mRegSegs.es; if (pXmsVector == NULL) { //你没有安装Xms扩展内存管理程序,请加载Himem.Sys文件 } [ Last edited by firstsail on 2007-6-12 at 06:41 PM ] |
|
| 第3楼 firstsail | 发表于 2007-06-12 21:44 |
| 高级用户 发帖 295 积分 668 来自 广东深圳 | |
|
我有一个工程,多个Exe文件加起来有8M字节多,整个工程14M多,如果编译成一个Exe文件是不实现的,我作了功能分解
“主程序 + 子程序1 + 子程序2 + 子程序3 + 子程序4 ... + 子程序N ” 为了运行“子程序”,将“子程序文件名 + 识别标志 + 回车换行”写入键盘缓冲区,并将“主程序”主动退出,这时会自动运行“子程序”。 子程序退出到DOS之前,将“主程序文件名 + 识别标志 + 回车换行”写入键盘缓冲区,“子程序”退出后,会自动运行“主程序”。 (1)子程序读到“识别标志”,表示是主程序调用,退出时必须实现调回主程序的代码。 (2)主程序读到“识别标志”,表示是子程序返回,必须实现子程序退出前的状态代码。 由于键盘缓冲区只有32字节,除去回车换行后,只剩下14个有效字符,所以不要写入程序名所在的目录,也不要写入文件后缀。 由于写入键盘缓冲区的每一个字符,必须写入“高字节扫描码 + 低字节ASCII码”,这样太繁,可以来一个偷梁换柱,写入的是“高字节永为0”,低字节ASCII码”。经测试,在“纯DOS”或Win9X下能正确运行。而在WinXP或Win2000下只需人工补一个回车换行即可。 [ Last edited by firstsail on 2007-6-12 at 10:11 PM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |