汇编和调用C函数 其他开发语言 / 汇编语言 - CSDN社区 community.csdn.net

来源:互联网 发布:爱知时计 编辑:程序博客网 时间:2024/05/18 04:00
导读:



我用汇编1.asm:  
      extrn   _o:near  
      data               segment  
      data               ends  
      code               segment  
      main               proc           far  
                            assume   cs:code,ds:data  
      start:  
                            push   ds  
                            sub     ax,ax  
                            push   ax  
                            mov     ax,data  
                            mov     ds,ax  
      call     _o  
      ret  
      main               endp  
      code               ends  
      end                 start  
   
  调用o.c:  
  #include  
   
  o()  
  {  
  printf("aaa");  
  }  
   
  extern       void       main();  
   
  两个文件分别编译为obj文件:  
  tcc   -c   -Iz:/tc/include   o.c  
  masm   1  
  然后连接  
  tlink   1.obj   o.obj  
  总会报错“Undefined   symbol   '_PRINTF'   in   module   O.C  
  为何?如何解决阿?



文件改为:  
  1.asm:  
      extrn   _o:near  
      public   _main  
      data               segment  
      data               ends  
      code               segment  
      _main               proc           far  
                            assume   cs:code,ds:data  
      start:  
                            push   ds  
                            sub     ax,ax  
                            push   ax  
                            mov     ax,data  
                            mov     ds,ax  
      call     _o  
      ret  
      _main               endp  
      code               ends  
      end                 start  
  o.c:  
  #include   "stdarg.h"  
  #include   "stdio.h"  
   
  o()  
  {  
      printf("%s","aaaaa");  
  }  
   
  extern   void   main();  
   
  拷贝stdarg.h、stdio.h拷到tc根目录下,masm、tcc也在这个目录  
  编译通过  
   
  但是一执行生成的exe,dos就死机了  




本文转自

http://topic.csdn.net/t/20060904/10/4996403.html