彙編語言調用C語言
題目:用彙編語言調用C語言實現21!(21的階乘)
實驗軟件:ARM Developer Suite V1.2
步驟:建立兩個文件,一個.s文件,一個.c文件,順序無所謂,但要在一個project裏;
文件 test.s
AREA test,CODE,READONLY
IMPORT CFUN
ENTRY
CODE32
START
MOV R0,#21
BL CFUN
STOP
B STOP
END
文件main.c //不用包含頭文件
long long CFUN(int a){ //函數返回類型和result類型都要是long long int,注意階乘結果很大,一個寄存器放不下。
long long result=1;
int i=1;
for(i;i<=a;i++)
result=result*i;
return result;
}
---------------------
彙編調用C時,函數參數用寄存器傳,默認從R0開始,大於4個的參數要用堆棧指針傳;C函數返回值默認放在R0中,運行後查看寄存器結果即可(此題結果過大,一個放不下,R0放階乘結果的低位,R1放結果的高位)
運行結果:
此文章本人原創,如有問題底部留言,如有轉載請標明出處。
--HurryChen
Happy Coding!
*\( ^ v ^ )/*