保护模式下你指的是windows下吧,据我所知windows下不提供dos功能调用。

解决方案 »

  1.   

    多谢风和彬的指点,还有一种情况是在纯DOS,386P权级下调用DOS中断,应该如何在IDT中建立原来DOS中断的CS,IP描述符。
      

  2.   

    保护方式下,IDT的结构与实方式下中断矢量表类似,但IDT的起使地址不是0,
    对于80386以上的微处理器,基地址是00f00000H,界限000FFH,你试试改改地址。
      

  3.   

    开玩笑,你以为进入保护模式,然后修改IDT就可以像在实模式下一样访问DOS中断了吗?呵呵:)
      

  4.   

    unalone,既然你知道,完全可以说吗。很愿意看到你的解决方法。
      

  5.   

    开一个V86模式任务是通用的做法,或关闭A20地址线(=v86, maybe)。
      

  6.   

    最简单的办法:使用WATCOM C++来写程序,可以使用保护模式的功能,比如,32位地址,扩充的寄存器,还可以同时使用DOS提供的功能服务,玩过DOS游戏的朋友应该记得那个“DOS4GW.EXE”吧?那就是WATCOM C++提供的DOS扩展器,它完成了保护模式创建及保护模式的中断重定向功能,应用程序可以透明的使用DOS的功能而不必考虑其他的。
      

  7.   

    其他的办法也有,像WINDOWS那样使用V86来兼容DOS,在V86内部运行程序,将DOS包括在内,然后在保护模式创建另一个任务,来提供诸如大的地址空间之类的服务,好象这是比较通用的方法吧?呵呵:)
      

  8.   

    保护模式下的中断和实模式不同,即使用同样的中断号,也是调用不同的处理
    程序,而且中断向量表每项4个字节,IDT中8个字节,所以用你的方法很难。
      

  9.   

    unalone(阿龙) :
        WATCOM  C++是一个什么样的东西啊?是哪个公司的产品?我菜,没办法!
      

  10.   

    隐藏API:VXDCALL可调用!!!
    看WINDOWS大奥秘!!!
      

  11.   

    WATCOM C++是一个DOS下的C++集成开发环境,就像TUBRO C/C++一样,如果你检查一下的话,像《仙剑奇侠传》这类DOS下的游戏目录下大部分都有一个DOS4GW.EXE,这就说明这个游戏是用WATCOM C++开发的。
      

  12.   

    软、硬中断都是用VxD啦。看书去吧!很多地方介绍!
      

  13.   

    是呀,DOS扩展器就是这个原理呀,不过,如果你不想写操作系统的话,最好还是用现成的扩展器,因为它已经为你考虑的很周全了:)