C語言中嵌入?yún)R編語言在本論壇中的集錦 論壇中的一些個人看法,我收集了一下,對錯的話,大家見仁見智啊 下面是一個簡單的例子,具體參數(shù)傳遞等,看書 $NOMOD51 ACC DATA 0E0H P_VM EQU 0DFE2H P_PAGE EQU 0DFE0H NAME VM ?C_VM?VM SEGMENT CODE PUBLIC C_VM MOV ACC,#00H PUSH ACC PUSH ACC MOV DPTR,#P_VM MOV A,#0CH MOVX @DPTR,A NOP RET END 看了KEIL-C的手冊,介紹可以這樣加入?yún)R編 #pragma asm; nop; nop; #pragma endasm; 在properties項(xiàng)使能對話框中的Generate Assembler SRC File和Assembler SRC File選項(xiàng)。 但為何我這樣做一直編譯通不過呢,它一直提示語法錯誤。請大蝦指教 已經(jīng)搞定,是我在開始處定義了一個NOP,所以在使用寫ASM NOP時沖突才會報(bào)錯。 請教:C語言調(diào)用匯編程序時,如何使"Assembly output file"項(xiàng)激活請教:C語言調(diào)用匯編程序時,創(chuàng)建匯編子程序框架時,需要在Workbench菜單Project中選擇Option命令,并在其中的ICC430選項(xiàng)類中,對list設(shè)置:Assembly output file,可是這個選項(xiàng)時灰色的,如何才能激活?? C語言調(diào)用匯編程序不需要任何設(shè)置,只要將匯編的函數(shù)另外保存成一個獨(dú)立的匯編文件,并把該文件添加到工程中。在C語言中要聲明該匯編函數(shù)為外部函數(shù),當(dāng)然匯編的寫法要注意一些事項(xiàng),這要看一些相關(guān)的資料了。 我是想用c語言寫個框架,自動生成匯編源程序,這樣就需要設(shè)置以上的選項(xiàng)。不過可以自己寫匯編的框架,就是以上你所說的辦法,現(xiàn)在已經(jīng)好了,謝謝你! keil c能編譯匯編程序嗎?keil c能編譯匯編程序嗎? 當(dāng)然可以了,內(nèi)嵌匯編語句就可以了#pragma src命令 c語言和匯編語言怎么連接誰有c語言和匯編語言怎么連接的資料告訴我一下 建議: 用C語言做個框架,編譯后改為匯編框架,填入?yún)R編程序,一般可以保證和C語言兼容.注意格式 _asm { ....... ........ ...... } 如果你用KEIL C高版本的話可以分別編寫C和匯編的模塊,存成2個文件,分別添加到你的項(xiàng)目里,然后BUILD ALL就行了,系統(tǒng)集成環(huán)境回自動聯(lián)接的。早期版本需要分別編譯生成OBJ文件,然后聯(lián)接就可以了。 用內(nèi)聯(lián)inline 請教keil c51中加入?yún)R編我在網(wǎng)上下載了一段程序,可怎么也不懂,調(diào)了半天也沒調(diào)通,請大家看看應(yīng)該怎么用呀,程序中的shiftR1是干什么的,還有x,ruturn(x)返回什么值? 這是下載的程序://<asm.h> #ifdef ASM unsigned long shiftR1(register unsigned long); #else extern unsigned long shiftR1(register unsigned long); #endif //end of asm.h //<asm.c> #define ASM #include <asm.h> #include <reg52.h> #pragma OT(4,speed) unsigned long shiftR1(register unsigned long x) { #pragma asm clr c mov a,r4 rrc a mov r4,a mov a,r5 rrc a mov r5,a mov a,r6 rrc a mov r6,a mov a,r7 rrc a mov r7,a #pragma endasm return(x); } //end of asm.c x=x*2; x為4位長整型。 r4567是放x的 在C51中插入?yún)R編問題!請教各位: 1、我想在C51的程序中插入?yún)R編程序,然后用KEIL編譯。使用的格式是 asm(" ljmp 8000h ");。但在用keil編譯是提示有錯。是否要include 什么頭文件。 2、在C51的源程序中能否進(jìn)行絕對地址的調(diào)用與跳轉(zhuǎn)。如;LCALL 8000H LJMP 8000H。 1。混合編程我也想學(xué)哦,不過我用WAVE試過幾次都不行,現(xiàn)在聽說WAVE有指令能用了,不過我沒試過哦! 2。好象沒有哦,不如沒必要有呀,因?yàn)橛卸紱]用! KEILC51中是不能直接嵌入?yún)R編,C196就可以。 {f2)我使用的是wave,可以先用c51編個子程序接口(定好接口變量),再在a51下用匯編編子程序。最后用L51把這兩部分聯(lián)結(jié)起來(注意用參數(shù),避免程序重疊)。我沒用過什么特殊的頭文件,至于是否可以用長跳轉(zhuǎn)語句不是很清楚。 絕對地址跳轉(zhuǎn)應(yīng)該不能用。 樓上的說的對,keilc51中要想嵌入?yún)R編,必須單獨(dú)寫一匯編的程序文件,然后和c51的程序文件連接編譯。其中還牽扯一些問題,參數(shù)、程序名等,去老古那里看看吧 KEILC51中是可以直接嵌入?yún)R編,方法為#Pragma asm 匯編行 #pragma ,注意在寫匯編之后要 記得加 END 這樣子就OK了。( 這樣我試過了,編譯時時需要勾選SRC項(xiàng),不過軟仿真執(zhí)行時遇到莫名其妙的問題。如整個程序不從MAIN處執(zhí)行等,不知怎么回事?)
|