DOS中使用扩展内存与XMS操作库设计

本文介绍了如何在DOS下通过Pascal语言实现XMS库,以访问1MB以上的RAM。XMS库允许程序员在DOS真实模式下方便地使用扩展内存。文章提供了详细的库函数实现,并通过一个示例程序演示了内存分配、复制和释放等功能。
摘要由CSDN通过智能技术生成
DOS中使用扩展内存与XMS操作库设计

作者:彭学周(Favory.Peng

DOS系统常规内存指的是0-640K的内存区。在DOS下,一般的应用程序只能使用系统的常规内存,因而都要受到640KB内存的限制。而且由于DOS本身和config.sys文件中的安装的设备驱动程序和autoexec.bat文件中执行的内存驻留程序都要占用一些常规内存,所以应用程序能使用的常规内存是不到640K的。为了解决应用程序的内存需求问题最常用的方法就是使用扩展内存(XMS),扩展内存只能用在80286或更高档次的机器上,目前几乎所有使用DOS的机器上超过1M的内存都是扩展内存。扩展内存同样不能被DOS直接使用,DOS5.0以后提供了Himem.sys这个扩展内存管理程序,我们可以通过它来管理扩展内存。
加载方法:在config.sys文件中要加上一句话:DEVICE=C:/DOS/HIMEM.SYS,然后就能在程序中访问扩展内存了。利用mem.exe查看内存情况就可以看到你的物理内存1M以上的内存都被列为XMS扩展内存部分啦,我们就可以利用HIMEM.SYS提供的内存管理功能接口来使用XMS啦;
XMS的使用步骤如下:
1、加载驱动,在Config中加入DEVICE=C:/DOS/HIMEM.SYS;
2、获取驱动入口地址;
3、申请XMS内存获取句柄;
4、使用XMS内存(写入,读取);
5、根据句柄释放XMS内存;
XMS操作库: DM&P DOS XMS Library 下载地址:http://www.dmp.com.tw/tech/dmp-lib/xms/
具体的C语言版本的XMS操作函数可以在网上直接搜索到,参考:http://www.blogjava.net/wudiasm/archive/2008/11/09/195680.html
本人用Pascal在TP7.0下面重新实现了这套函数库,希望对你有所帮助;
  1. {uxms.pas}
  2. {
  3. DOS XMS library is a DOS real mode and large memory model Pascal library.
  4. Because DOS is ran under real mode, programmer only can access RAM under 1MB.
  5. The memory user can use are 640 KB, Other 384 KB are reserved for ROM BIOS and other cards.
  6. XMS library provides DOS programmer a easy way to access RAM above 1 MB under DOS via XMS driver.
  7. For MS-DOS, add "DOS=HIGH" to you CONFIG.SYS will force MS-DOS to active XMS driver.
  8. ================================================================================
  9. 3F Medical Pascal XMS Library.
  10. Copyright (C) 2008 by Favory.Peng.
  11. This library is for 3F Medical product user only.
  12. }
  13. unit UXMS;
  14. interface
  15. uses DOS,CRT;
  16. type
  17.   XMMS = record
  18.     byte_count:LongInt;   {bytes count}
  19.     source_handle:word;   {source handle}
  20.     source_offset:Pointer;{source offset}
  21.     dest_handle:word;     {destination handle}
  22.     dest_offset:Pointer;  {destination offset}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值