如何在TC2.0中調(diào)用匯編程序
TC是美國(guó)BORLAND 公司在IBM PC機(jī)上開(kāi)發(fā)的一個(gè)高效、優(yōu)化的C編譯程序,它自帶高效的全屏幕編輯程序,在集成開(kāi)發(fā)環(huán)境下可支持編輯、編譯、連接調(diào)試和運(yùn)行等過(guò)程連續(xù)完成。
TC提供了與匯編語(yǔ)言的接口和在C程序中直接插入?yún)R編指令代碼的功能,支持以“遠(yuǎn)調(diào)用”和“近調(diào)用”方式來(lái)調(diào)用使用匯編語(yǔ)言編寫(xiě)的函數(shù)。
TC調(diào)用匯編語(yǔ)言函數(shù)時(shí),對(duì)匯編語(yǔ)言的編寫(xiě)要求十分嚴(yán)格,并且對(duì)大小寫(xiě)字母也有嚴(yán)格的區(qū)分。如果在編寫(xiě)供TC調(diào)用的匯編函數(shù)時(shí)不按照規(guī)定好了的格式書(shū)寫(xiě),調(diào)用是不會(huì)成功的。
下面先舉一個(gè)在TC中調(diào)用匯編函數(shù)的例子,然后再詳細(xì)講解怎樣做才能成功。
步聚如下:
1、在TC集成環(huán)境中編寫(xiě)一個(gè)主程序(名為T(mén)CMAIN.C)
/*程序功能:建立一個(gè)整型數(shù)組并輸入數(shù)組的各元素值,調(diào)用匯編代碼以取得元
素最大值和該最大值在數(shù)組中的位置*/
#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集成環(huán)境中編寫(xiě)如下匯編代碼(取名為T(mén)CFOUND.ASM)
(功能:取得數(shù)組元素最大值和該最大值在數(shù)組中的位置)
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宏匯編在命令行下對(duì)TCFOUND.ASM匯編:
masm tcfound.asm
匯編后生成一個(gè)模塊文件 tcfound.obj
注意:如果tcfound.asm不在該目錄下,必須指出該文件所在路徑。
匯編后把tcfound.obj復(fù)制到TC目錄下,以便于建立TC下的工程文件。
4、工程文件的建立
在TC集成環(huán)境下建一個(gè)新文件,其內(nèi)容為:
TCMAIN.C
TCFOUND.OBJ
就只有以上兩行內(nèi)容,寫(xiě)完后保存為MYTC.PRJ
注意:MYTC.PRJ是一個(gè)工程文件,其后綴必須為.PRJ,這是TC中工程文件的標(biāo)識(shí)。這個(gè)工程文件
的內(nèi)容只有兩行,說(shuō)明了該工程包含了TCMAIN.C和TCFOUND.OBJ兩個(gè)程序模塊。對(duì)工程文件
編譯連接時(shí)將依次編譯和連接這兩個(gè)文件,最后連接成可執(zhí)行文件MYTC.EXE
5、編譯連接前的設(shè)置
由于TC對(duì)大小寫(xiě)字母非常敏感,而MASM匯編生成的OBJ文件均為大寫(xiě)字母,故需把LINKER選項(xiàng)中的CASE-SENSITIVE LINK(大小寫(xiě)敏感連接)開(kāi)關(guān)關(guān)閉(OFF)狀態(tài)。
操作如下:
F10--OPTION--LINKER 回車(chē)后選菜單的最下面的一項(xiàng)“CASE-SENSITIVE LINK”,把光標(biāo)停在這一選項(xiàng)上,回車(chē)即可改變其設(shè)置為“OFF”狀態(tài)。
最后不要忘了保存設(shè)置的結(jié)果。
6、編譯連接
選菜單 F10---Project---Project name 回車(chē)后輸入剛才建立的工程文件名MYTC
選菜單 F10---Compile---Build all 回車(chē)后即開(kāi)始對(duì)工程文件MYTC.prj編譯連接,最后生成可運(yùn)行文件MYTC.EXE
相關(guān)文章
c++ 虛函數(shù)與純虛函數(shù)的區(qū)別(深入分析)
本篇文章是對(duì)c++中虛函數(shù)與純虛函數(shù)的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++實(shí)現(xiàn)LeetCode(70.爬樓梯問(wèn)題)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(70.爬樓梯問(wèn)題),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)版通訊錄的代碼分享
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的動(dòng)態(tài)版通訊錄,主要運(yùn)用了結(jié)構(gòu)體,一維數(shù)組,函數(shù),分支與循環(huán)語(yǔ)句等等知識(shí),需要的可以參考一下2023-01-01C++實(shí)現(xiàn)圖書(shū)館管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)圖書(shū)館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++實(shí)現(xiàn)簡(jiǎn)單學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++實(shí)現(xiàn)LeetCode(100.判斷相同樹(shù))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(100.判斷相同樹(shù)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07使用VSCode和VS2017編譯調(diào)試STM32程序的實(shí)現(xiàn)
這篇文章主要介紹了使用VSCode和VS2017編譯調(diào)試STM32程序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05C語(yǔ)言超詳細(xì)講解數(shù)據(jù)結(jié)構(gòu)中的線(xiàn)性表
線(xiàn)性表,數(shù)據(jù)結(jié)構(gòu)中最簡(jiǎn)單的一種存儲(chǔ)結(jié)構(gòu),專(zhuān)門(mén)用于存儲(chǔ)邏輯關(guān)系為"一對(duì)一"的數(shù)據(jù)。線(xiàn)性表是基于數(shù)據(jù)在實(shí)際物理空間中的存儲(chǔ)狀態(tài),又可細(xì)分為順序表(順序存儲(chǔ)結(jié)構(gòu))和鏈表2022-05-05