CSDN=>FAQ=>FAQ 展示
  • 问题内容:如何将vc和一个用masm程序编译的obj链接起来呢?
  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=4657778
  • 所属论坛:汇编语言     审核组:其他开发语言
  • 提问者:TaiJi1985     解决者:zara
  • 感谢:zara fhb13
  • 关键字:其他开发语言 汇编语言 编译 code ret far 楼主 简写 masm swi
  • 答案:

    main.cpp
    ---------------------------------
    extern "C"  void SWITCH();
    void main()
    {
    SWITCH();
    }
    ---------------------------------
    switch.asm:

    .386
    code segment
    assume cs:code
    SWITCH proc far

    mov eax,eax
    ret 

    SWITCH endp
    code ends
    end 
    -----------------------------

    使用 masm32编译的话,可以和vc链接成功,但是,运行错误,就是ret那个地方
    ret被编译成了retf,运行到这里就会出错。

    试过ret 4 ret 6 ret 8 ret 12 都不行。
    请问高手如何解决。

    我又使用masm6.11编译,结果和vc链接不到一起。郁闷.


    --------------
    请高手指教!
    ---------------------------------------------------------------

    ret 只是重置 EIP, retf 重置 CS:EIP. 对没有声明调用类型的子程, 编译程序缺省指定为 near, 所以返回的 ret 就是 RETN (return near); 声明为 FAR 类型的, ret 就是 RETF (return far). 一般将 RETN 简写为 RET
    ---------------------------------------------------------------

    masm6.11以前版本不支持COFF的OBJ格式
    不过masm6.11好像可以支持COFF,楼主看看你的编译选项里面有没有coff

  • 评价: 有价值 给朵鲜花(0) 无价值 扔个鸡蛋(0)
相关FAQ
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo