用的是borland c++ 3.0
typedef unsigned long DWORD;
DWORD value =0;
_asm
{
   push eax
   mov eax,value
   pop eax
}
总是说eax未定义,怎么设置环境变量呢?

解决方案 »

  1.   

    不要使用集成编译
    使用命令行编译为.asm文件,然后再使用tasm编译为obj文件,最后用tlink连接,记得加上需要的库文件
      

  2.   

    我用tasm a.asm a.obj 提示
    **Error** a.asm(55) Too few operands to instruction
    我打开源程序,看到55行是一个unsiged long device;没有理由错误呀.
      

  3.   

    是不是应该大写啊 EAX
    或者类似 __EAX
      

  4.   

    我在进行tlink a.obj tlink a.exe
    提示
    Fatal:unable to open dpmimen.dll
      

  5.   

    asm里是不分大小写的!
    borland c++ 3.0
    你写的是十六位程序吧
    它好象不能生成32们的程序吧,也就是说它只能用ax,而不是32位的EAX
    DWORD是32位的
      

  6.   

    To 楼上:
    要是用VC我还用的着来这里问吗?
      

  7.   

    用tasm a.asm a.obj 提示
    **Error** a.asm(55) Too few operands to instruction
    我打开源程序,看到55行是一个unsiged long device;没有理由错误呀.???你不是编译的asm文件吗?怎么会55行是C的语法?还要一个要注意的,要使用eax等32位寄存器,需要指示编译器使用386以上cpu.使用asm的代码改为:typedef unsigned long DWORD;
    DWORD value =0;
    _asm
    {
       .386
       push eax
       mov eax,value
       pop eax
    }
    对了,还有一个办法,换成watcom c++编译,dos下最好用的编译器,强烈推荐。
      

  8.   

    试试看Borland C++ 3.1吧,我一直都用这个,一点问题都没有。
      

  9.   

    DWORD value =0;
    _asm
    {
       .386
       push eax
       mov eax,value
       pop eax
    }