这东西可真够古老的。学习《80x86。。。。》8.5节

1.汇编模块:

.MODEL SMALL

.CODE

PUBLIC  _Sum

_Sum      PROC

               .........

               .........

_Sum     END

/*程序名:CA8.C*/
externSum(int,int,int);/*声明函数sum已在其他模块定义*/
intxxx=5               /*以初始化的变量*/
intyyy;

main()
{
yyy=Sum(1,xxx,3);
print("%d\n",yyy);
}

;;模块名:A8.ASM
;;内容:含一个供CA8.C调用的函数Sum
     .MODEL SMALL
     .CODE
     PUBLIC _Sum

PARM1 EQU [BP+4]  ;这里为什么用[bp+4],[bp+6]..获取参数,请参考教材《80x86...》
PARM2 EQU [BP+6]   ;
PARM3 EQU [BP+8]

_Sum  PROC

      PUSH BP
      MOV BP,SP
      MOV AX,PARM1
      ADD AX,PARM2
      ADD AX,PARM3
      POP BP
      RET
_Sum  ENDP
      END

最后用下面命令编译CA8.C,汇编A8.ASM,最后再连接到一起:
TCC  -ms  CA8  A8.ASM

或者是分别:

TCC -ms -c CA8

TASM /ml A8

TLINK c0s CA8 A8,CA8, ,cs

上述最后连接命令的c0s和cs分别是Turbo C的small模式下的启动代码

目标模块文件和库函数。

阅读全文
类别:c/c++ 查看评论
posted on 2011-05-21 22:45  sinbad_li  阅读(286)  评论(0编辑  收藏  举报