問:我該怎么寫一個將被C調(diào)用的匯編函數(shù)?
答:一個最簡單的學(xué)習(xí)怎么寫匯編的方式是,先用C寫這個代碼的簡單版本,然后用編譯器將它編譯成為匯編代碼。然后你就可以用這個輸出的匯編代碼作為你自己匯編函數(shù)的模板。例如:
你說你想寫一個帶有“l(fā)ong”類型參數(shù)的匯編子程序,那么首先用C寫一個函數(shù):
void MyAsmFunc(unsigned long parameter)
{
}
好了,現(xiàn)在編譯它產(chǎn)生匯編代碼。PICC編譯器的-S選項可以。
picc -16f877 -S file.c
這個命令將產(chǎn)生"file.as",打開它,它看起來像下面這樣:
; param _parameter assigned to ?_MyAsmFunc+0
_MyAsmFunc$parameter set ?_MyAsmFunc+0
psect text1,local,class=CODE,delta=2
global _MyAsmFunc
signat _MyAsmFunc,4216
psect text1
_MyAsmFunc
bcf 3,6
bcf 3,5
return
因為PICC編譯器會讓函數(shù)的bank回零。所以我們在這里看到它在return之前把bank回到bank0。從這個匯編代碼開始,你可以擴充你的匯編代碼。函數(shù)的參數(shù)可以使用_MyAsmFunc$paramter符號來訪問。這個符號訪問的是第一個字節(jié),其余的字節(jié)就在符號上加偏移量,例如:
_MyAsmFunc$parameter+2
這將引用第三個字節(jié)。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64921 -
編譯器
+關(guān)注
關(guān)注
1文章
1662瀏覽量
50237
發(fā)布評論請先 登錄
匯編在C語言中的定義和調(diào)用
匯編語言模塊調(diào)用C++函數(shù)實例
C函數(shù)調(diào)用機制與棧幀原理詳解

如何使用內(nèi)聯(lián)函數(shù)法調(diào)用匯編函數(shù)?
匯編調(diào)用C1、用c編寫函數(shù)
C++教程之函數(shù)的遞歸調(diào)用
如何在c51程序中調(diào)用匯編函數(shù)
Linux匯編與C互相調(diào)用
C和匯編如何互相調(diào)用?
EE-128:C++中的DSP:從C++調(diào)用匯編類成員函數(shù)

C語言代碼中調(diào)用匯編函數(shù)需要注意什么
在匯編中調(diào)用C函數(shù)
EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù)

評論