如果keil5的話,在匯編內(nèi)調(diào)用c語言的變量,可以
創(chuàng)新互聯(lián)主營大荔網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),大荔h5微信平臺(tái)小程序開發(fā)搭建,大荔網(wǎng)站營銷推廣歡迎大荔等地區(qū)企業(yè)咨詢
IMPORT (變量名)
LDR r0, =(變量名) //獲得該變量地址到r0
LDR r0,[r0] //將r0其值作為地址,獲取其地址指向的值
這樣c中變量的值就傳遞到r0了
首先你得搞清楚s32 function(u32 VirtualAddr)編譯后叫什么。一般來說可能會(huì)叫_function。
傳遞參數(shù)很簡單,如果ax里放的就是參數(shù),那么push ax,然后再調(diào)用就可以。
返回值如果我沒有記錯(cuò)的話應(yīng)該在AX里。如果返回值太長,就會(huì)放到堆棧里。
你想搞清楚如果跨語言編程,最好徹底明白C語言的機(jī)制。也就是寫一段函數(shù)調(diào)用程序比如下面的
main()
{ int i;}
fu(int i)
{in j}
然后編譯成匯編語言,好好研究一下?;蛘咴購?fù)雜一點(diǎn)。請參考。
有什么問題再向我提問
Printf scanf
應(yīng)該不能直接調(diào)用的??梢詫懗鎏娲瘮?shù),
就以輸出為例。將光標(biāo)定位在下一個(gè)位置,向顯存輸入字符。用足夠大的連續(xù)的空間存放字符串。
這樣做成可以隨時(shí)調(diào)用的子函數(shù)就好了。
還可以鍛煉自己。
或者是反匯編一下VC的PRINTF 函數(shù)。