![C語言對比匯編的好處_第1頁](http://file4.renrendoc.com/view/c538868b7b27ebea9d43d7e5803750f7/c538868b7b27ebea9d43d7e5803750f71.gif)
![C語言對比匯編的好處_第2頁](http://file4.renrendoc.com/view/c538868b7b27ebea9d43d7e5803750f7/c538868b7b27ebea9d43d7e5803750f72.gif)
![C語言對比匯編的好處_第3頁](http://file4.renrendoc.com/view/c538868b7b27ebea9d43d7e5803750f7/c538868b7b27ebea9d43d7e5803750f73.gif)
![C語言對比匯編的好處_第4頁](http://file4.renrendoc.com/view/c538868b7b27ebea9d43d7e5803750f7/c538868b7b27ebea9d43d7e5803750f74.gif)
![C語言對比匯編的好處_第5頁](http://file4.renrendoc.com/view/c538868b7b27ebea9d43d7e5803750f7/c538868b7b27ebea9d43d7e5803750f75.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C語言對比匯編的好處簡單來說,c語言對匯編語言進行了抽象,具有如下優(yōu)點:?更符合人類思維習慣,開發(fā)效率高、時間短。?模塊化??梢浦残院?。?提供數(shù)學函數(shù)并支持浮點運算。程序可讀性和可維護性強。C語言當然也有缺點,比如實時性通常要比匯編差。在編寫匯編的時候可以清楚的知道每一條指令究竟要多少個機器周期,但是在C中掌控準確的時間稍微困難一些。C51包含ANSIC關鍵字的同時,也有針對51單片機擴展的一些關鍵字。C51的擴展關鍵字從某種程度上體現(xiàn)了C51語言與標準C語言的不同。例如可重入函數(shù)、存儲模式等等都是標準C中不存在的問題。ANSIC關鍵字auto:自動變量double:雙精度類型int:聲明整型類型struct:聲明結(jié)構體類型break:跳出當前循環(huán)else:條件語句否定分支(與if連用)long:聲明長整型類型switch:用于開關語句?case:開關語句分支??enum:聲明枚舉類型register:聲明寄存器變量typedef:用以給數(shù)據(jù)類型取別名(當然還有其他作用)char:聲明字符型類型extern:聲明變量是在其他文件正聲明(也可以看做是引用變量)??return:子程序返回語句(可以帶參數(shù),也看不帶參數(shù))??union:聲明聯(lián)合數(shù)據(jù)類型const:聲明只讀變量float:聲明浮點型類型short:聲明短整型類型unsigned:聲明無符號類型類型continue:結(jié)束當前循環(huán),開始下一輪循環(huán)?for:一種循環(huán)語句(可意會不可言傳)signed:生命有符號類型類型void:聲明函數(shù)無返回值或無參數(shù),聲明無類型指針(基本上就這三個作用)
default:開關語句中的“其他”分支?goto:無條件跳轉(zhuǎn)語句????sizeof:計算數(shù)據(jù)類型長度??volatile:說明變量在程序執(zhí)行中可被隱含地改變?do:循環(huán)語句的循環(huán)體while:循環(huán)語句的循環(huán)條件static:聲明靜態(tài)變量if:條件語句C51擴展關鍵字_at_為變量定義存儲空間絕對地址alien聲明與PL/M51兼容的函數(shù)bdata可位尋址的內(nèi)部RAMbit位類型codeROMcompact使用外部分頁RAM的存儲模式data直接尋址的內(nèi)部RAMidata間接尋址的內(nèi)部RAMinterrupt中斷服務函數(shù)large使用外部RAM的存儲模式pdata分頁尋址的外部RAM_priority_RTX51的任務優(yōu)先級reentrant可重入函數(shù)sbit聲明可位尋址的特殊功能位sfr8位的特殊功能寄存器sfr1616位的特殊功能寄存器small內(nèi)部RAM的存儲模式_task_實時任務函數(shù)using選擇工作寄存器組xdata外部RAMC51的運算符與C語言幾乎無異(至今沒有發(fā)現(xiàn)區(qū)別)。算術運算符+ 力口,?兀取正?
-減,?元取負?*乘?/除%取模?--自減1?++自加1邏輯運算符&&邏輯與邏輯或!邏輯非關系運算符>大于>=大于等于<小于<=小于等于==等于!二不等于?位運算符號&按位與按位或"按位異或-按位取反>>右移<<左移復合運算符算術運算符與位運算符可以組成符合運算符,例如:+二、-二等等。其它運算符?expr1?expr2:expr3sizeof計算字節(jié)數(shù)*指針操作&求址口下表運算符->成員訪問運算符.成員訪問運算符運算符在C51中與標準的C語言并沒有什么差異,但是變量卻有一些比較關鍵的區(qū)別。變量的數(shù)據(jù)類型基本變量類型與標準C語言,C51的基本數(shù)據(jù)類型有char、int、short、long和float。除float外均可以使用signed和unsigned指定有符號型和無符號型,默認情況下都是signed。char占用一個字節(jié),int和short都占2個字節(jié),long占4個字節(jié),float占4個字節(jié)。其它數(shù)據(jù)類型指針類型:指針與標準C中的指針概念相同,指向一個特定的地址(地址存放的可以是變量也可以是函數(shù))。例如:intfunc(inta,intb);int(*pointer)(int,int)=func;其它數(shù)據(jù)類型:enum、struct、union以及數(shù)組。C51專有數(shù)據(jù)類型:bit、sfr、sfr16以及sbit。bit變量存儲在可位尋址區(qū),保存一位二進制數(shù)。注:不能用指針指向位變量。sfr和sfr16指的是特殊寄存器變量。sbit聲明的是可位尋址變量的一個位??晌粚ぶ返淖兞烤褪谴鎯υ赽data的變量,以及部分sfr。例如:intbdatabitTest;sbitbit0=bitTest”0;例子中的bit0就是bitTest的第0位。變量的作用域C51的變量分為局部變量和全局變量。變量的存儲種類auto:默認register:編譯器盡量將變量放在寄存器中。extern:全局變量,可以在多個文件中使用。static:使得局部變量的壽命與程序相同;使得全局變量只在文件內(nèi)有效。變量的存儲區(qū)域這個是C51與標準C語言區(qū)別很明顯的地方°C51中可以指定變量存儲在具體的存儲器區(qū)域內(nèi):例如片內(nèi)RAM、片外RAM、或者是ROM里。例如:chardatatest='c';定義test變量存儲在直接尋址的內(nèi)部RAM區(qū)。具體的存儲區(qū)域如下表:存儲類型存儲區(qū)域data片內(nèi)直接尋址RAMidata片內(nèi)間接尋址RAMpdata分頁尋址的片外RAMxdata片外數(shù)據(jù)存儲(64K)code片內(nèi)統(tǒng)一編址ROM(64K)bdata片內(nèi)可位尋址的RAM(128位)指針與存儲區(qū)域與變量相同,我們也可以指定指針的存儲區(qū)域,以及指針所指向的變量的存儲區(qū)域。指明了所指向變量的具體存儲區(qū)域的指針效率要更高一些,占用的存儲區(qū)也少一些(三字節(jié)一字節(jié))。例如:TOC\o"1-5"\h\zI II I■ char data *str1;//指針指向data存儲區(qū)的字符變量 ,I II I! char data * data str2;//指針本身也在data區(qū)域 !I II I絕對地址的變量在C51中,可以另變量存儲在存儲器中的特定地址。這是通過“_at_”關鍵字實現(xiàn)的。例如:■chardatatest_at_0x100;不過需要注意的是,絕對地址的變量具有如下要求:?不能初始化?bit類型不能用絕對地址?只有全局變量才可以使用絕對地址順序結(jié)構、選擇結(jié)構與循環(huán)結(jié)構順序結(jié)構僅僅是簡單的一個語句一個語句的執(zhí)行。選擇結(jié)構的語句有:ifelse,switch循環(huán)結(jié)構的語句有:for,while,dowhile與標準C語言一樣,循環(huán)結(jié)構中可以使用break和continue,switch中可以使用break。函數(shù)在C51中,函數(shù)的聲明,定義和調(diào)用的方式基本一致,這里僅僅記錄一些主要的不同之處:可重入函數(shù)C51中的函數(shù)在默認情況下是不可以被多個進程共享的,而可重入函數(shù)則沒有這個限制。讓函數(shù)可重用的方法如下:!inttestFunc(inta,intb)reentrant;III- 指定寄存器組在C51中,我們可以指定函數(shù)指定特定的寄存器組。如果為中斷函數(shù)指定寄存器組,那么所有被該中斷函數(shù)調(diào)用的函數(shù)都必須使用這個寄存器組。指定函數(shù)使用的寄存器組的方法是在函數(shù)原型后面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Rilmazolam-生命科學試劑-MCE-2242
- cis-N-Acetyl-S-4-hydroxy-2-buten-1-yl-L-cysteine-d3-生命科學試劑-MCE-7054
- 3-4-MDPA-hydrochloride-生命科學試劑-MCE-3492
- 二零二五年度離婚后財產(chǎn)分割與共同生活費用承擔協(xié)議
- 2025年度養(yǎng)老服務機構專用房產(chǎn)租賃協(xié)議
- 二零二五年度貨車運輸貨物跟蹤與反饋合同
- 2025年度股份占比協(xié)議書模板:知識產(chǎn)權入股股份占比協(xié)議書
- 二零二五年度企業(yè)食堂衛(wèi)生安全責任合同
- 2025年度越野輪車銷售與服務協(xié)議
- 跨學科知識體系的整合與實踐
- 《民航安全檢查(安檢技能實操)》課件-第一章 民航安全檢查員職業(yè)道德
- 學校食品安全教育學習活動食品安全講座課件
- 綠色建筑項目造價咨詢服務方案
- DB34T4826-2024畜禽養(yǎng)殖業(yè)污染防治技術規(guī)范
- 腰麻課件教學課件
- 石油化工企業(yè)環(huán)境保護管理制度預案
- 2024年甘肅省高考歷史試卷(含答案解析)
- 2024年山東省煙臺市初中學業(yè)水平考試地理試卷含答案
- 抗腫瘤治療所致惡心嘔吐護理
- 2024年廣東省中考地理試題(含解析)
- 西安經(jīng)濟技術開發(fā)區(qū)管委會招聘考試真題
評論
0/150
提交評論