tc是美國borland 公司在ibm pc機上開發的乙個高效、優化的c編譯程式,它自帶高效的全螢幕編輯程式,在整合開發環境下可支援編輯、編譯、連線除錯和執行等過程連續完成。
tc提供了與組合語言的介面和在c程式中直接插入彙編指令**的功能,支援以「遠呼叫」和「近呼叫」方式來呼叫使用組合語言編寫的函式。
tc呼叫組合語言函式時,對組合語言的編寫要求十分嚴格,並且對大小寫字母也有嚴格的區分。如果在編寫供tc呼叫的彙編函式時不按照規定好了的格式書寫,呼叫是不會成功的。
下面先舉乙個在tc中呼叫彙編函式的例子,然後再詳細講解怎樣做才能成功。
步聚如下:
1、在tc整合環境中編寫乙個主程式(名為tcmain.c)
/*程式功能:建立乙個整型陣列並輸入陣列的各元素值,呼叫彙編**以取得元
素最大值和該最大值在陣列中的位置*/
#include
void main()
2、在tc整合環境中編寫如下彙編**(取名為tcfound.a**)
(功能:取得陣列元素最大值和該最大值在陣列中的位置)
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
end3、用ma**巨集彙編在命令列下對tcfound.a**彙編:
ma** tcfound.a**
彙編後生成乙個模組檔案 tcfound.obj
注意:如果tcfound.a**不在該目錄下,必須指出該檔案所在路徑。
彙編後把tcfound.obj複製到tc目錄下,以便於建立tc下的工程檔案。
4、工程檔案的建立
在tc整合環境下建乙個新檔案,其內容為:
tcmain.c
tcfound.obj
就只有以上兩行內容,寫完後儲存為mytc.prj
注意:mytc.prj是乙個工程檔案,其字尾必須為.prj,這是tc中工程檔案的標識。這個工程檔案
的內容只有兩行,說明了該工程包含了tcmain.c和tcfound.obj兩個程式模組。對工程檔案
編譯連線時將依次編譯和連線這兩個檔案,最後連線成可執行檔案mytc.exe
5、編譯連線前的設定
由於tc對大小寫字母非常敏感,而ma**彙編生成的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
ARM彙編程式設計之C程式呼叫匯程式設計序
編寫乙個彙編子程式,實現兩個字資料的加法運算,編寫乙個c程式來呼叫該彙編子程式,並將運算結果使用printf 函式顯示出來。示例如下 為解決這個問題,分別編寫滿足需求的c程式和匯程式設計序。c程式源 define uint32 unsigned int extern uint32 add uint3...
c語言中如何呼叫匯程式設計序
組合語言的基本格式為 佛山seo 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...
常用匯程式設計序轉移指令
1,無條件轉移指令 長轉移 jmp無條件轉移指令 call過程呼叫 ret retf過程返回 2,條件轉移指令 短轉移,128到 127的距離內 當且僅當 sf xor of 1時,op1 ja jnbe不小於或不等於時轉移.意思就是大於則就跳 jae jnb大於或等於轉移.jb jnae小於轉移....