TC2.0中怎样调用汇编程序
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
转载于:https://www.cnblogs.com/carekee/articles/2569791.html
TC2.0中怎样调用汇编程序相关推荐
- c语言中如何调用汇编程序
1.如果汇编程序是可执行文件,比如exe文件,则可以使用system函数直接调用.比如下面的代码,用system()打开windows上的记事本程序. 1 2 3 4 5 6 7 #includ ...
- Coco2dx-3.0中怎样调用LUA
一个用3.0的工具导出类到lua,自己主动生成代码的方法. 曾经要导出c++类到lua.就得手动维护pkg文件,那简直就是噩梦.3.0以后就会感觉生活非常轻松了. 以下我就在说下详细做法. 1.安装必 ...
- Tc2.0编写俄罗斯方块游戏
Tc2.0编写俄罗斯方块游戏 作者:陈畅 联系地址:上海财经大学图书馆 电子邮件:shufechenchang@263.net 个人主页:http://shchenchang.top263.net/ ...
- Ajax 1.0 中使用web控件调用后台方法的用法.
今天在做页面文本框审核的时候发现个Ajax 1.0 中使用web控件调用后台方法的一个不爽的地方. 把该调用方法发上来供大家参考. 首先我们创建一个MasterPage.master文件. 在页面上放 ...
- .NET2.0中,Winform程序如何异步调用Web Service呢?[Demo下载]——与.net1.1环境下比较...
最近在MSDN上看到一个在.NET1.1中Winform程序异步调用WebService的例子 我准备模仿着迁移到.NET2.0环境中,遗憾的是,一切不是那么简单. 首先,.net1.1中调用的Web ...
- [转]在.NET CF2.0中调用DirectShow来处理视音频数据
[转]在.NET CF2.0中调用DirectShow来处理视音频数据 转自:http://www.winbile.net/bbs/forums/threads/1000586.aspx 于渊 200 ...
- Unity中SteamVR2.0 手柄交互调用方式
再次接触到HTC Vive项目时发现交互已经跟几年前的写法不一样了,而且VRTK插件也需要找对应的版本才行,否则会报错,版本已经不兼容. 这里总结下我在项目中遇到的手柄交互在Unity中的调用: 1. ...
- 《珍藏TC2.0》: TCC.exe,TLink.exe,TLib.exe 命令行选项及其使用!
在开始看本文以前,我先说明一下C语言的安装和使用中最应该注意的地方: 许多网友在下载Turbo C 2.0和Turbo C++ 3.0后,向我问得最多的是在使用过程中碰到如下问题: 1)出现找不到 ...
- TC2.0库函数清单
TC2.0库函数清单 一 字符函数和字符串函数 ANSI C 标准要求在使用字符函数时包含ctype.h,使用字符串函数时包含头文件string.h. 1. 字符函数 (ctype.h) (1) is ...
最新文章
- Oracle三级联动单表地址数据
- spring计算方圆300km内其它城市(附完整代码)
- 数据结构课上笔记10
- M1芯片的Mac电脑如何进入到恢复模式?
- 从其他项目中复制过来的mapper加载不进bean_手把手带你玩转k8s-一键部署springboot项目...
- R2CNN 算法笔记
- 通用数据权限管理系统设计
- 在matlab上标点,matlab注释用什么符号
- 陌生人交友软件有哪些?陌生人社交APP排名|良心推荐
- 给大家贴一点好东东 喜欢电影的朋友请看
- #学习方法 linux的教程推荐
- Todesk一直显示正在连接本地连接
- 【高等数学】曲率和曲率半径
- C语言strcpy_s 和strncpy_s的用法,以及函数实现的方法
- 卡普雷卡与西西弗斯.C
- 论文阅读-基于遗传算法的NAS
- 第四套人民币荧光“四大天王”收藏价值分析
- Docker简介与安装
- 2022-2027年中国竹制家具行业市场调研及未来发展趋势预测报告
- 【报告分享】2021上半年移动广告流量观察白皮书-APP GrowingMob研究院七麦数据(附下载)
热门文章
- 第三章网络安全基础考试要点及真题分布
- 华为搭载鸿蒙系统的手表,华为手表Watch 3即将发布:搭载鸿蒙系统
- 一杯水怎么测试_每滴都是“芯”鲜好水,碧然德新款净水器实测
- 标题文字超出2行 则隐藏后面显示省略号
- STM32时钟学习之STM3210X_RCC.H解读
- 计算机网络 —— 总结(面试问题)
- css编写规则BEM
- 分配和释放 BSTR 的内存
- 借贷宝详细注册步骤:邀请朋友送20元,朋友再邀请朋友还送你10元【3天已赚6千】(附我的邀请记录和提现到账截图)...
- CSS 魔法系列:纯 CSS 绘制各种图形《系列五》