欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8806|回復: 5
收起左側

Keil軟件“C語言”與“匯編”混編—相關知識整理

  [復制鏈接]
ID:249638 發表于 2017-11-15 14:09 | 顯示全部樓層 |閱讀模式
給大家分享一個Keil軟件“C語言”與“匯編”混編教程,給需要 C與匯編 混編的同學

用 Keil 在C中嵌入匯編  1
在 Keil 中嵌入匯編  2
介紹直接嵌入匯編代碼的方法  4
采用匯編可能會有的好處  5
Keil C 語言與匯編語言混合編程  7
深入剖析 Keil C51  —— 從匯編到 C51  9
C 語言和匯編語言的變量以及函數的接口問題   14
匯編與 C 語言混合編程的關鍵問題  15
KEIL 段重定位  15

用 Keil 在 C 中嵌入匯編
    早前公布了C和匯編混編的溫度控制器程序,收到一些朋友的詢問,他們無法在自己程序中使用我的18B20的匯編子程序或無法正常通過混編后的程序編譯。
    其實在KEIL 中嵌入匯編的方法很簡單。 如圖一, 在 C 文件中要嵌入匯編的地方用#pragma  asm 和#pragma  endasm分隔開來,這樣編譯時 KEIL 就知道這中間的一段是匯編了。
0.png
0.png
    為了能對匯編進行封裝還要在項目中加入相應的封裝庫文件, 在筆者的項目中編譯模式是小模式所以選用
C51S.LIB。這也是最常用的。這些庫文件是中 KEIL 安裝目錄下的 LIB 目錄中。 加好后就可以順利編譯了。(注:
我只在 7.0以上版本使用過)
0.png

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

   2、在有加入匯編的文件中,還要設置編譯該文件時的選項,如圖 2 所示。
0.png
    3、Generate Assembler SRC File 生成匯編 SRC 文件 Assemble SRC File  封裝匯編文件
       (如圖 3 的狀態為選中)
       選上這兩項就可以在 C 中嵌人匯編了,設置后在文件圖示中多了三個紅色的小方塊。
0.png
    4、為了能對匯編進行封裝還要在項目中加入相應的封裝庫文件, 在筆者的項目中編譯模式是小模式所以選用 C51S.LIB。這也是最常用的。這些庫文件是中 KEIL 安裝目錄下的 LIB 目錄中。 加好后就可以順利編譯了
0.png
介紹直接嵌入匯編代碼的方法
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)加入工程中,  該文件必須作為工程的最后文件;
0.png

采用匯編可能會有的好處
C51 編譯器能對 C語言程序進行高效率的編譯,生成高效簡潔的代碼,在大多數的應用場合,采用 C語言編程即可完成預期的任務,但是,在有些場合還是會用到匯編,例如在下面的幾種情況下,采用匯編可能會有很多好處:
1、已有程序的移植:在單片機領域工作很久的工程人員可能會保留有很多的早期用匯編語言編制的程序模塊,并且這些模塊已經經過實際應用的驗證,如果重新用 C編程,可能工作量很大,這時就可以用嵌入匯編的方式把以前的匯編模塊植入新的應用,可以明顯的加快開發的進度。
2、局部功能需要足夠短的執行時間:在有些應用中,部分的功能模塊需要有很高的執行效率,而有些匯編的指令在 C中沒有對應的指令,這給我們對單片機的高效操作帶來困難,嵌入匯編可是我們的程序執行更有效率。
3、對一些特定地址進行操作:在 C中我們要對特定地址進行讀寫,一般用以下兩種方式:用_AT_指令定義變量; 定義指向外部端口或數據地址的指針; 在匯編中只需要使用 MOVX A,@DPTR或MOVX @DPTR,A 就可以了,
這樣可以增強程序的可讀性。
4、其他的需要匯編的應用:在這里我們不可能舉出所有可能要用匯編的例子,在你的應用中,你可能在一個或多個應用中感到 C語言的不足,而需要用到匯編指令,請你記住,可以在 C中嵌入匯編子程序,這對你的程序非常有用。
0.png

完整的pdf格式文檔51黑下載地址(共17頁):
Keil軟件“C語言”與“匯編”混編-——-相關知識整理.pdf (421.94 KB, 下載次數: 100)



回復

使用道具 舉報

ID:268118 發表于 2018-1-29 06:09 | 顯示全部樓層
感謝樓主的分享。
回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:128099 發表于 2019-11-16 13:29 | 顯示全部樓層
這個是好資料,謝謝樓主。
回復

使用道具 舉報

ID:18591 發表于 2019-12-8 23:12 | 顯示全部樓層

這個是好資料,謝謝樓主。
回復

使用道具 舉報

ID:343852 發表于 2021-7-20 11:19 來自觸屏版 | 顯示全部樓層
感謝樓主分享!受益了!
回復

使用道具 舉報

ID:624685 發表于 2021-7-27 12:52 | 顯示全部樓層
好資料,謝謝LZ分享。收藏慢慢學習
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表