中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » [公告]c编程使用xms起步:问题已经解决
作者:
标题: [公告]c编程使用xms起步:问题已经解决 上一主题 | 下一主题
wwgfree
初级用户




积分 105
发帖 1
注册 2004-3-25
状态 离线
『楼 主』:  [公告]c编程使用xms起步:问题已经解决

我用msc6.0编程,应用在pc104嵌入式系统中,使用的是DOC磁盘,系统是win98带的Dos,采样LARGE模式。需要用到xms(通过HIMEM.SYS的功能调用),找了个例子,改完后分配内存都没有问题,就是一交换数据就死机,这是交换数据的代码,请大家帮忙看看,或再给些例子看看也行。另外希望请教的是:使用xms有没有版本的问题,和dos版本有没有关系? 多谢!

        typedef struct EMB_struct
        {
                unsigned long len;                /*--需传输的数据字节数(32位)--*/
                unsigned sour_han;                /*源数据块句柄*/
                unsigned long sour_off;        /*源数据块偏移量(32位)*/
                unsigned dest_han;                /*目标数据块句柄*/
                unsigned long dest_off;        /*目标数据块偏移量*/
        }EMB,*PEMB;

//功能: 扩充内存和常规内存中的数据交换
//参数:
//返回: void
//_FunctionXMS:扩展内存管理函数指针
//_emb:EMB全局变量
//_ErrorNo:错误标号全局变量
void movedataXMS(void)
{
        UINT _ax;
        UINT _seg;
        UINT _off;
        char far *  pEMB;

        if(_FunctionXMS)
        {
                pEMB = (char far *)(&_emb);
                //不知道会不会影响就都给保存了
                _asm push ds
                _asm push es
                _asm push si

                _asm push ds
                _asm pop es
                _asm lds si, pEMB
                _asm ah, 0x0b

                (* _FunctionXMS)();

                _asm pop si
                _asm pop es
                _asm pop ds

                _asm mov _ax, ax
                _ErrorNo = 0;
                if(_ax)
                        _ErrorNo=0;
                else
                {
                        _asm mov _ErrorNo, bl
                }
        }
}
是函数调用的问题,由于本人汇编很菜,犯了不该犯的错误,此时功能调用函数需要使用es






















[此贴子已经被作者于2004-3-26 16:31:17编辑过]




2004-3-25 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: