如何在TC2.0中调用汇编程序

2016-02-19 09:53 10 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐如何在TC2.0中调用汇编程序,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - 编程语言 】

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

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

/*程序功能:建立一个整型数组并输入数组的各元素值,调用汇编代码以取得元
  素最大值和该最大值在数组中的位置*/
#includestdio.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;i10;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

来源:http://www.tulaoshi.com/n/20160219/1592499.html

延伸阅读
标签: Delphi
  Delphi作为一种面向对象的可视化开发工具,以其开发程序的高速度和编译代码的高效率越来越受到广大编程人员的喜爱。尽管Delphi已经提供了非常强大的开发组件(VCL),但灵活使用API函数一定可以使你的程序增色不少。 状态键的检查 当今不少流行软件的编辑窗口(包括Delphi的代码编辑窗口)的底部都有一个状态条...
标签: SQLServer
  任何基于锁的并发系统的一个不可避免的特点是在某些条件下系统可能阻塞。当一个连接占有一个锁而另一个连接试图改变锁的状态时,第二个连接要么等待第一个连接释放锁,要么因此而被阻塞。 为了获得最好的可扩展性,性能和并发能力,在设计应用程序和查询语句时,应该注意尽量缩短事务的长度, 并且减少占有锁的时间。大多数并发问题往...
标签: Web开发
以下代码是在VB.NET(Framework 2.0)中调用SQLServer2005 的Intergration Service中DTS包。 1 如果要在WebService中调用DTS,必须用VB.NET语言。因为如果用C#编写WebService的话,将无法引用Microsoft.SqlServer.ManagedDTS组件。 2 将NETWORK SERVICE帐户添加到Administrator组中,否则将不能执行DTS。(会带来安全漏洞) ...
/*--------本程序由sunny整理完成-----------*/ ***  基于DOS平台,在Turbo c2.0中调试通过 ** ***   原码见于http://sunny1979.icpcn.com           http://tchome.icpcn.com     ***/#include "conio.h" #include "stdio.h" #in...
标签: SQLServer
极限编程潜在的中心前提就是两种思想比一种要好。两个程序员并排坐在一起,一个编程,另一个逐块逐行地挑刺。这样做的原因很明显,如果在键盘上操作的人是司机的话,那么他旁边的人就是领航员。当中没有谁是上司——他们的地位是平等的,角色是相辅相成的。极限编程让人震惊的地方就是实际起作用的技术。 由于有回报,极限编程已经在前端开发...

经验教程

83

收藏

7
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部