問:我該怎么寫一個將被C調用的匯編函數?
答:一個最簡單的學習怎么寫匯編的方式是,先用C寫這個代碼的簡單版本,然后用編譯器將它編譯成為匯編代碼。然后你就可以用這個輸出的匯編代碼作為你自己匯編函數的模板。例如:
你說你想寫一個帶有“long”類型參數的匯編子程序,那么首先用C寫一個函數:
void MyAsmFunc(unsigned long parameter)
{
}
好了,現在編譯它產生匯編代碼。PICC編譯器的-S選項可以。
picc -16f877 -S file.c
這個命令將產生"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編譯器會讓函數的bank回零。所以我們在這里看到它在return之前把bank回到bank0。從這個匯編代碼開始,你可以擴充你的匯編代碼。函數的參數可以使用_MyAsmFunc$paramter符號來訪問。這個符號訪問的是第一個字節,其余的字節就在符號上加偏移量,例如:
_MyAsmFunc$parameter+2
這將引用第三個字節。
-
函數
+關注
關注
3文章
4331瀏覽量
62622 -
編譯器
+關注
關注
1文章
1634瀏覽量
49133
發布評論請先 登錄
相關推薦
評論