手机
当前位置:查字典教程网 >编程开发 >C语言 >如何在TC2.0中调用汇编程序
如何在TC2.0中调用汇编程序
摘要:TC是美国BORLAND公司在IBMPC机上开发的一个高效、优化的C编译程序,它自带高效的全屏幕编辑程序,在集成开发环境下可支持编辑、编译、...

TC是美国BORLAND 公司在IBM PC机上开发的一个高效、优化的C编译程序,它自带高效的全屏幕编辑程序,在集成开发环境下可支持编辑、编译、连接调试和运行等过程连续完成。

TC提供了与汇编语言的接口和在C程序中直接插入汇编指令代码的功能,支持以“远调用”和“近调用”方式来调用使用汇编语言编写的函数。

TC调用汇编语言函数时,对汇编语言的编写要求十分严格,并且对大小写字母也有严格的区分。如果在编写供TC调用的汇编函数时不按照规定好了的格式书写,调用是不会成功的。

下面先举一个在TC中调用汇编函数的例子,然后再详细讲解怎样做才能成功。

步聚如下:

1、在TC集成环境中编写一个主程序(名为TCMAIN.C)

/*程序功能:建立一个整型数组并输入数组的各元素值,调用汇编代码以取得元

素最大值和该最大值在数组中的位置*/

#include<stdio.h>

void main()

{

extern found(int i,int*j,int *k,int *s);

int i,j,k,s[10];

printf("Enter Values of Array:/n");

for(i=0;i<10;i++)

scanf("%d",&s[i]);

i=10;

found(i,&j,&k,s);

printf("/nThe Max_Value is:%d/n",j);

printf("The Place is:%d/n",k);

}

2、在TC集成环境中编写如下汇编代码(取名为TCFOUND.ASM)

(功能:取得数组元素最大值和该最大值在数组中的位置)

PUBLIC _FOUND

_TEXT SEGMENT BYTE PUBLIC 'CODE'

ASSUME CS: _TEXT

_FOUND PROC NEAR

PUSH BP

MOV BP,SP

MOV CX,[BP+4]

DEC CX

MOV SI,[BP+10]

LODSW

MOV DX,1

MOV BX,0

COMP: CMP AX,[SI]

JA BIGGER

MOV AX,[SI]

MOV BX,DX

BIGGER: INC SI

INC SI

INC DX

LOOP COMP

MOV DI,[BP+6]

MOV [DI],AX

MOV DI,[BP+8]

MOV [DI],BX

POP BP

RET

_FOUND ENDP

_TEXT ENDS

END

3、用MASM宏汇编在命令行下对TCFOUND.ASM汇编:

masm tcfound.asm

汇编后生成一个模块文件 tcfound.obj

注意:如果tcfound.asm不在该目录下,必须指出该文件所在路径。

汇编后把tcfound.obj复制到TC目录下,以便于建立TC下的工程文件。

4、工程文件的建立

在TC集成环境下建一个新文件,其内容为:

TCMAIN.C

TCFOUND.OBJ

就只有以上两行内容,写完后保存为MYTC.PRJ

注意:MYTC.PRJ是一个工程文件,其后缀必须为.PRJ,这是TC中工程文件的标识。这个工程文件

的内容只有两行,说明了该工程包含了TCMAIN.C和TCFOUND.OBJ两个程序模块。对工程文件

编译连接时将依次编译和连接这两个文件,最后连接成可执行文件MYTC.EXE

5、编译连接前的设置

由于TC对大小写字母非常敏感,而MASM汇编生成的OBJ文件均为大写字母,故需把LINKER选项中的CASE-SENSITIVE LINK(大小写敏感连接)开关关闭(OFF)状态。

操作如下:

F10--OPTION--LINKER 回车后选菜单的最下面的一项“CASE-SENSITIVE LINK”,把光标停在这一选项上,回车即可改变其设置为“OFF”状态。

最后不要忘了保存设置的结果。

6、编译连接

选菜单 F10---Project---Project name 回车后输入刚才建立的工程文件名MYTC

选菜单 F10---Compile---Build all 回车后即开始对工程文件MYTC.prj编译连接,最后生成可运行文件MYTC.EXE

【如何在TC2.0中调用汇编程序】相关文章:

如何在二叉树中找出和为某一值的所有路径

解析如何在C语言中调用shell命令的实现方法

如何通过函数指针调用函数(实现代码)

如何利用tinyxml操纵xml及注意问题

C++ clock()解析如何使用时钟计时的应用

C++函数中return语句的使用方法

解析static在C和C++中的用法以及区别

如何将C语言代码转换为应用程序(也就是编译)

C与C++中结构体的区别

从汇编看c++中多态的应用

精品推荐
分类导航