日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...

發(fā)布時間:2024/9/27 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Keil軟件“C語言”與“匯編”混編

相關知識整理

用Keil在C中嵌入?yún)R編1

在Keil中嵌入?yún)R編2

介紹直接嵌入?yún)R編代碼的方法4

采用匯編可能會有的好處5

Keil C語言與匯編語言混合編程7

深入剖析Keil C51 —— 從匯編到C519

C語言和匯編語言的變量以及函數(shù)的接口問題14

匯編與C語言混合編程的關鍵問題15

KEIL段重定位16

用Keil在C中嵌入?yún)R編

早前公布了C和匯編混編的溫度控制器程序,收到一些朋友的詢問,他們無法在自己程序中使用我的18B20的匯編子程序或無法正常通過混編后的程序編譯。

其實在KEIL中嵌入?yún)R編的方法很簡單。如圖一,在C文件中要嵌入?yún)R編的地方用#pragma asm和#pragma endasm分隔開來,這樣編譯時KEIL就知道這中間的一段是匯編了。

圖1 在有加入?yún)R編的文件中,還要設置編譯該文件時的選項

圖2 Generate Assembler SRC File 生成匯編SRC文件

Assemble SRC File 封裝匯編文件

(如圖三的狀態(tài)為選中)

選上這兩項就可以在C中嵌人匯編了,設置后在文件圖示中多了三個紅色的小方塊。

圖3 為了能對匯編進行封裝還要在項目中加入相應的封裝庫文件, 在筆者的項目中編譯模式是小模式所以選用C51S.LIB。這也是最常用的。這些庫文件是中KEIL安裝目錄下的LIB目錄中。 加好后就可以順利編譯了。(注:我只在7.0以上版本使用過)

圖4

在Keil中嵌入?yún)R編

1、其實在KEIL中嵌入?yún)R編的方法很簡單。如圖1,在C文件中要嵌入?yún)R編的地方用#pragma asm和#pragma endasm分隔開來,這樣編譯時KEIL就知道這中間的一段是匯編了。

2、在有加入?yún)R編的文件中,還要設置編譯該文件時的選項,如圖2所示。

3、Generate Assembler SRC File 生成匯編SRC文件

Assemble SRC File 封裝匯編文件

(如圖3的狀態(tài)為選中)

? 選上這兩項就可以在C中嵌人匯編了,設置后在文件圖示中多了三個紅色的小方塊

4、為了能對匯編進行封裝還要在項目中加入相應的封裝庫文件, 在筆者的項目中編譯模式是小模式所以選用C51S.LIB。這也是最常用的。這些庫文件是中KEIL安裝目錄下的LIB目錄中。 加好后就可以順利編譯了

1、在 C 文件中要嵌入?yún)R編代碼片以如下方式加入?yún)R編代碼:

#pragma ASM

; Assembler Code Here

#pragma ENDASM

2、在 Project 窗口中包含匯編代碼的 C 文件上右鍵,選擇“Options for ...”,點擊右邊的“Generate Assembler SRC File”和“Assemble SRC File”,使檢查框由灰色變成黑色(有效)狀態(tài);

3、根據(jù)選擇的編譯模式,把相應的庫文件(如 Small 模式時,是 Keil\C51\Lib\C51S.Lib)加入工程中, 該文件必須作為工程的最后文件;

C51編譯器能對C語言程序進行高效率的編譯,生成高效簡潔的代碼,在大多數(shù)的應用場合,采用C語言編程即可完成預期的任務,但是,在有些場合還是會用到匯編,例如在下面的幾種情況下,采用匯編可能會有很多好處:電子園51單片機學習網(wǎng)|;eWu]E

1、已有程序的移植:在單片機領域工作很久的工程人員可能會保留有很多的早期用匯編語言編制的程序模塊,并且這些模塊已經(jīng)經(jīng)過實際應用的驗證,如果重新用C編程,可能工作量很大,這時就可以用嵌入?yún)R編的方式把以前的匯編模塊植入新的應用,可以明顯的加快開發(fā)的進度。

^5WhX)Ouq3g446062、局部功能需要足夠短的執(zhí)行時間:在有些應用中,部分的功能模塊需要有很高的執(zhí)行效率,而有些匯編的指令在C中沒有對應的指令,這給我們對單片機的高效操作帶來困難,嵌入?yún)R編可是我們的程序執(zhí)行更有效率。

&K0u.g.{S(Q446063、對一些特定地址進行操作:在C中我們要對特定地址進行讀寫,一般用以下兩種方式:用_AT_指令定義變量;定義指向外部端口或數(shù)據(jù)地址的指針;在匯編中只需要使用MOVX A,@DPTR或MOVX @DPTR,A就可以了,這樣可以增強程序的可讀性。

?&B{&oY]D)x6x'x&x446064、其他的需要匯編的應用:在這里我們不可能舉出所有可能要用匯編的例子,在你的應用中,你可能在一個或多個應用中感到C語言的不足,而需要用到匯編指令,請你記住,可以在C中嵌入?yún)R編子程序,這對你的程序非常有用。

9h3{;`oVO$F$QUN6{)s4460

總結

以上是生活随笔為你收集整理的keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。