標(biāo)題: [原創(chuàng)]如何實(shí)現(xiàn)c51和asm的混編 [打印本頁(yè)]

作者: xb_crazyman    時(shí)間: 2008-6-9 19:07
標(biāo)題: [原創(chuàng)]如何實(shí)現(xiàn)c51和asm的混編

這是我在編程中積累的經(jīng)驗(yàn),希望對(duì)大家有用!

如何實(shí)現(xiàn)C51和匯編的混合編程
(文中用到的編譯器一律為keil)
1、首先來(lái)個(gè)范例,并從這個(gè)范例展開(kāi)說(shuō)明:
............       //C51 Code here
#pragma ASM
.............     //Here is the Assembler Code
#pragma ENDASM
...........      //C51 Code here

2、看到范例,大家應(yīng)該對(duì)實(shí)現(xiàn)C51和匯編的混合有個(gè)大概了解了,呵呵,

其實(shí)也就這么一回事。
但是我們還必須要做一些前提工作,首先在Project窗口中包含匯編代碼(

ASM)的C文件單擊右鍵,選擇“Options for ...”,然后點(diǎn)擊“Generate

Assembler SRC File”和“Assemble SRC File”

3、根據(jù)選擇的編譯模式,把相應(yīng)的庫(kù)文件加入工程,應(yīng)該注意的是,這個(gè)

文件必須作為該工程的最后一個(gè)文件


4、大家可以復(fù)制下面這個(gè)C51和匯編的混編代碼練習(xí)一下,加深印象
#i nclude <reg51.h>
void main(void)
{
 P2=0x00;
 #pragma asm
      MOV R7,#10
 #pragma endasm
 P2=0xff;
}


5、上面的過(guò)程掌握了以后,我們?cè)賮?lái)看一下如何實(shí)現(xiàn)無(wú)參數(shù)傳遞的函數(shù)調(diào)


例如我們要調(diào)用一個(gè)延時(shí)函數(shù)delay()
     //C51
extern void delayms();   //聲明
int main()
{
 delayms();   //調(diào)用
}


6、有參傳遞
其實(shí)是一樣的,就是在子函數(shù)中加了參數(shù)罷了
例如:int delay(int minite,int second,……)//參數(shù)可以多個(gè)


作者: cheng    時(shí)間: 2008-7-20 09:02

求助!。! 大俠,我還是不知道.我是初學(xué)者!!


作者: ashore07    時(shí)間: 2008-7-27 22:37

o(∩_∩)o...學(xué)習(xí)了


作者: 3050DJ    時(shí)間: 2014-10-27 20:50
高手。。。。。
作者: 2468416253    時(shí)間: 2014-11-10 13:35
頂!!!!!!!
作者: qq704661078    時(shí)間: 2015-1-31 23:00
正想研究這個(gè)方法呢……頂一個(gè)
作者: yuan1lf    時(shí)間: 2016-1-26 18:40
很不錯(cuò),樓主厲害,謝樓主!支持一下




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1