c如何连接汇编的obj文件?

bluecrest 2004-08-01 06:29:45
// CASM.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>

extern int product(int x,int y);

int main(int argc, char* argv[])
{
printf("%d",product(25,3));
return 0;
}


product的汇编文件
public _product
_text segment byte public 'CODE'
assume cs:_text
_product proc near
push bp
mov bp,sp
mov ax,[bp+4]
mov cx,[bp+6]
sar ax,cl
pop bp
_product endp

_text ends

end

生成了product.obj

用vc编译上面那个cpp时找不到product

...全文
252 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
elyta 2004-08-10
  • 打赏
  • 举报
回复
不嫌麻烦的话,除了ldarmy(你的武器已破碎)说的方法以外,还可以用makefile的嘛。
xghost 2004-08-03
  • 打赏
  • 举报
回复
up
SDFDSAC 2004-08-02
  • 打赏
  • 举报
回复
晕~~
大熊猫侯佩 2004-08-02
  • 打赏
  • 举报
回复
一旦你的C源文件里包括了这些好东西,则必须用TCC.EXE的COMMAND-LINE来编译,具体的命令参数TCC.EXE已经提供,这里不复阐述了.最简单的是:TCC C源文件名(使用这个方法,TCC会自动调用TASM.EXE和TLINK.EXE,并且能够使TLINK.EXE正确的找到需要的.obj和.lib文件,如果你单步编译的话,可能会碰到很多的问题,主要是TLINK.EXE它自己并不会去找.obj和.lib文件,你自己可以建一个.bat文件,如果要指定.lib文件的目录的话可以用/L参数,在文章的后面有一个例子).但大家要注意了,看一下你的TC目录下面到底是否有TASM.EXE文件,并在TURBOC.CFG(这个文件包括TCC.EXE运行期参数,这里面所有参数在运很期都将被自动TCC.EXE使用,例如:-IH:\TC\INCLUDE-LH:\TC\LIB\)文件中设置好一些参数,并确认TASM.EXE的版本号要2.0以上,以及是否能够向下兼容.但是在大多数的情况下TC的目录是没有TASM.EXE的,或是版本不正常.
如果你有TASM.EXE文件并且TURBOC.CFG文件也已经写好了,但是还要注意一个
问题:运行TCC.EXE时要在独立的DOS SHELL下面(不要害怕,这不是一个新东西,我的意思
是,不在诸如TC下的DOS SHELL下面运行,我曾经败在这个问题下,当我发现时直想揍电脑
一顿,还好没有,不然就没有这篇文件了.)
还有一句重要的话:TC2.0支持大部分8086指令(当然用法有一些约定,不过现在我并不打算
进行详细说明,因为那是一件很繁杂的事,以后有时间或许会写出来----如果大家需要的话).
如果说上面我所说的那些约定很繁杂的话,那么下面的方法该是多么简单啊!
让我们使用Borland为TC2.0内建的变量来进行伪汇编.
或许你还不知道在TC2.0中还有一些内建的pseudo寄存器(可以看作是register 型的变量,但是它们比register型的变量好用的多)
_AX,_AH,_AL,
_BX,_BH,_BL,
_CX,_CH,_CL,
_DX,_DH,_DL,
_DI,_SI,_SP,
_CS,_DS,_ES,_SS
注意这些寄存器的size,_AX,_BX,_CX,_DX,_CS,_DS,_ES,_SS,_SI,_DI,_SP等都是16位的寄存器相当于C语言的unsigned int类型,其余的都是8位的寄存器(相当于unsigned char)(TC怎么可能支持32位的寄存呢,所以EAX等是不能用的,FS,GS和IP寄存器都是无效的),还有就是在传递参数的时候千万不要忘记使用强制类型转换.
wuanswer 2004-08-01
  • 打赏
  • 举报
回复
我也不会哦.
帮你up
SDFDSAC 2004-08-01
  • 打赏
  • 举报
回复
在分别生成obj后,再连接,可以用汇编的link main.obj+product.obj
也可以用c的,同样是在连接项里设置
bluecrest 2004-08-01
  • 打赏
  • 举报
回复
我的意思是混合编程,不是内嵌。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧