转载于: TC2.0中怎样调用汇编程序

一、概述

  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[];
printf("Enter Values of Array:/n");
for(i=;i<10;i++)
scanf("%d",&s[i]);
i=;
found(i,&j,&k,s);
printf("/nThe Max_Value is:%d/n",j);
printf("The Place is:%d/n",k);
}

2、在TC集成环境中编写如下汇编代码(取名为TCFOUND.ASM)
(功能:取得数组元素最大值和该最大值在数组中的位置)

  ENDPUBLIC _FOUND
_TEXT SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS: _TEXT
_FOUND PROC NEAR
PUSH BP
MOV BP,SP
MOV CX,[BP+]
DEC CX
MOV SI,[BP+]
LODSW
MOV DX,
MOV BX,
COMP: CMP AX,[SI]
JA BIGGER
MOV AX,[SI]
MOV BX,DX
BIGGER: INC SI
INC SI
INC DX
LOOP COMP
MOV DI,[BP+]
MOV [DI],AX
MOV DI,[BP+]
MOV [DI],BX
POP BP
RET
_FOUND ENDP
_TEXT ENDS

3、用MASM宏汇编在命令行下对TCFOUND.ASM汇编:
    汇编后生成一个模块文件 tcfound.obj

masm tcfound.asm

注意:如果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中怎样调用汇编程序的更多相关文章

  1. Coco2dx-3.0中怎样调用LUA

    一个用3.0的工具导出类到lua,自己主动生成代码的方法. 曾经要导出c++类到lua.就得手动维护pkg文件,那简直就是噩梦.3.0以后就会感觉生活非常轻松了. 以下我就在说下详细做法. 1.安装必 ...

  2. AFNetworking 3.0中调用[AFHTTPSessionManager manager]方法导致内存泄漏的解决办法

    在使用AFNetworking3.0框架,使用Instruments检查Leaks时,检测到1000多个内存泄漏的地方,定位到 [AFHTTPSessionManager manager] 语句中,几 ...

  3. 在thinkphp5.0中调用ajax时, 返回的JSON 格式数据在html前台不能用时

    在thinkphp5.0中调用ajax时,如果控制器返回的数据为json格式,视图层接收到返回值即为json格式的数据,此时应该把 JSON 文本转换为 JavaScript 对象,方便调用.具体代码 ...

  4. 在 Flash ActionScript 2.0 中调用 Javascript 方法

    本篇文章由:http://xinpure.com/call-the-javascript-method-in-flash-actionscript-2-0/ 在 Flash ActionScript ...

  5. [译] C# 5.0 中的 Async 和 Await (整理中...)

    C# 5.0 中的 Async 和 Await [博主]反骨仔 [本文]http://www.cnblogs.com/liqingwen/p/6069062.html 伴随着 .NET 4.5 和 V ...

  6. WCF学习之旅—WCF4.0中的简化配置功能(十五)

    六 WCF4.0中的简化配置功能 WCF4.0为了简化服务配置,提供了默认的终结点.绑定和服务行为.也就是说,在开发WCF服务程序的时候,即使我们不提供显示的 服务终结点,WCF框架也能为我们的服务提 ...

  7. 看看C# 6.0中那些语法糖都干了些什么(终结篇)

    终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...

  8. 看看C# 6.0中那些语法糖都干了些什么(中篇)

    接着上篇继续扯,其实语法糖也不是什么坏事,第一个就是吃不吃随你,第二个就是最好要知道这些糖在底层都做了些什么,不过有一点 叫眼见为实,这样才能安心的使用,一口气上五楼,不费劲. 一:字符串嵌入值 我想 ...

  9. FineUI(开源版)v6.0中FState服务器端验证的实现原理

    前言 1. FineUI(开源版)是完整开源,最早发起于 2008-04,下载全部源代码:http://fineui.codeplex.com/ 2. 你可以通过捐赠作者来支持FineUI(开源版)的 ...

随机推荐

  1. redis.config翻译

    # Redis configuration file example#redis配置文件范例 # Note on units: when memory size is needed, it is po ...

  2. java的学习路线

     首先是培养兴趣.先开始学习HTML知识.也就是做网页,从这里开始比较简单,就是几个标签单词需要记住.  接着开始学习CSS,这里开始不要学习非常多,只要能作出简单类似hao123之类的静态网页就已经 ...

  3. 【转】Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式

    http://www.cnblogs.com/wanqieddy/archive/2013/09/06/3305482.html android线程池的理解,晚上在家无事 预习了一下android异步 ...

  4. 获取文件CRC和MD5

    unit untCRCMD5; interface { 获取文件CRC校验码 } function GetFileCRC(const iFileName: string): String; { 获取字 ...

  5. 一步一步写算法(之 A*算法)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在前面的博客其中,事实上我们已经讨论过寻路的算法.只是,当时的演示样例图中,可选的路径是唯一的 ...

  6. PHP面向对象之旅:抽象类继承抽象类(转)

    可以理解为对抽象类的扩展 抽象类继承另外一个抽象类时,不用重写其中的抽象方法.抽象类中,不能重写抽象父类的抽象方法.这样的用法,可以理解为对抽象类的扩展. 下面的例子,演示了一个抽象类继承自另外一个抽 ...

  7. Android中悬浮窗口的实现原理和示例代码

    用了我一个周末的时间,个中愤懑就不说了,就这个问题,我翻遍全球网络没有一篇像样的资料,现在将实现原理简单叙述如下: 调用WindowManager,并设置WindowManager.LayoutPar ...

  8. Qt 学习之路:线程总结

    前面我们已经详细介绍过有关线程的一些值得注意的事项.现在我们开始对线程做一些总结. 有关线程,你可以做的是: 在QThread子类添加信号.这是绝对安全的,并且也是正确的(前面我们已经详细介绍过,发送 ...

  9. IIS7保存配置文件及导入、导出、备份、还原

    IIS6下想要保存配置,只需在图形界面下点右键保存即可,但windows 2008下的IIS7却没有这样的选项, IIS7的配置文件有好几个,在c:\windows\system32\inetsrv\ ...

  10. ASP.NET MVC 第三回 Controller与View

    这节我们让ASP.NET MVC真正的跑起来 一.新建Controller 首先我们自己新建一个新的Controller在Controllers上点右键,添加,Controller选项   之后出现一 ...