keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...
Keil軟件“C語言”與“匯編”混編
相關知識整理
用Keil在C中嵌入匯編1
在Keil中嵌入匯編2
介紹直接嵌入匯編代碼的方法4
采用匯編可能會有的好處5
Keil C語言與匯編語言混合編程7
深入剖析Keil C51 —— 從匯編到C519
C語言和匯編語言的變量以及函數的接口問題14
匯編與C語言混合編程的關鍵問題15
KEIL段重定位16
用Keil在C中嵌入匯編
早前公布了C和匯編混編的溫度控制器程序,收到一些朋友的詢問,他們無法在自己程序中使用我的18B20的匯編子程序或無法正常通過混編后的程序編譯。
其實在KEIL中嵌入匯編的方法很簡單。如圖一,在C文件中要嵌入匯編的地方用#pragma asm和#pragma endasm分隔開來,這樣編譯時KEIL就知道這中間的一段是匯編了。
圖1 在有加入匯編的文件中,還要設置編譯該文件時的選項
圖2 Generate Assembler SRC File 生成匯編SRC文件
Assemble SRC File 封裝匯編文件
(如圖三的狀態為選中)
選上這兩項就可以在C中嵌人匯編了,設置后在文件圖示中多了三個紅色的小方塊。
圖3 為了能對匯編進行封裝還要在項目中加入相應的封裝庫文件, 在筆者的項目中編譯模式是小模式所以選用C51S.LIB。這也是最常用的。這些庫文件是中KEIL安裝目錄下的LIB目錄中。 加好后就可以順利編譯了。(注:我只在7.0以上版本使用過)
圖4
在Keil中嵌入匯編
1、其實在KEIL中嵌入匯編的方法很簡單。如圖1,在C文件中要嵌入匯編的地方用#pragma asm和#pragma endasm分隔開來,這樣編譯時KEIL就知道這中間的一段是匯編了。
2、在有加入匯編的文件中,還要設置編譯該文件時的選項,如圖2所示。
3、Generate Assembler SRC File 生成匯編SRC文件
Assemble SRC File 封裝匯編文件
(如圖3的狀態為選中)
? 選上這兩項就可以在C中嵌人匯編了,設置后在文件圖示中多了三個紅色的小方塊
4、為了能對匯編進行封裝還要在項目中加入相應的封裝庫文件, 在筆者的項目中編譯模式是小模式所以選用C51S.LIB。這也是最常用的。這些庫文件是中KEIL安裝目錄下的LIB目錄中。 加好后就可以順利編譯了
1、在 C 文件中要嵌入匯編代碼片以如下方式加入匯編代碼:
#pragma ASM
; Assembler Code Here
#pragma ENDASM
2、在 Project 窗口中包含匯編代碼的 C 文件上右鍵,選擇“Options for ...”,點擊右邊的“Generate Assembler SRC File”和“Assemble SRC File”,使檢查框由灰色變成黑色(有效)狀態;
3、根據選擇的編譯模式,把相應的庫文件(如 Small 模式時,是 Keil\C51\Lib\C51S.Lib)加入工程中, 該文件必須作為工程的最后文件;
C51編譯器能對C語言程序進行高效率的編譯,生成高效簡潔的代碼,在大多數的應用場合,采用C語言編程即可完成預期的任務,但是,在有些場合還是會用到匯編,例如在下面的幾種情況下,采用匯編可能會有很多好處:電子園51單片機學習網|;eWu]E
1、已有程序的移植:在單片機領域工作很久的工程人員可能會保留有很多的早期用匯編語言編制的程序模塊,并且這些模塊已經經過實際應用的驗證,如果重新用C編程,可能工作量很大,這時就可以用嵌入匯編的方式把以前的匯編模塊植入新的應用,可以明顯的加快開發的進度。
^5WhX)Ouq3g446062、局部功能需要足夠短的執行時間:在有些應用中,部分的功能模塊需要有很高的執行效率,而有些匯編的指令在C中沒有對應的指令,這給我們對單片機的高效操作帶來困難,嵌入匯編可是我們的程序執行更有效率。
&K0u.g.{S(Q446063、對一些特定地址進行操作:在C中我們要對特定地址進行讀寫,一般用以下兩種方式:用_AT_指令定義變量;定義指向外部端口或數據地址的指針;在匯編中只需要使用MOVX A,@DPTR或MOVX @DPTR,A就可以了,這樣可以增強程序的可讀性。
?&B{&oY]D)x6x'x&x446064、其他的需要匯編的應用:在這里我們不可能舉出所有可能要用匯編的例子,在你的應用中,你可能在一個或多個應用中感到C語言的不足,而需要用到匯編指令,請你記住,可以在C中嵌入匯編子程序,這對你的程序非常有用。
9h3{;`oVO$F$QUN6{)s4460
總結
以上是生活随笔為你收集整理的keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android nfc编译,【Andro
- 下一篇: freetextbox java_Fre