資源描述:
《c語言對(duì)比匯編的好處》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、C語言對(duì)比匯編的好處簡(jiǎn)單來說,C語言對(duì)匯編語言進(jìn)行了抽象,具有如下優(yōu)點(diǎn):·更符合人類思維習(xí)慣,開發(fā)效率高、時(shí)間短?!つK化?!た梢浦残院谩!ぬ峁?shù)學(xué)函數(shù)并支持浮點(diǎn)運(yùn)算?!こ绦蚩勺x性和可維護(hù)性強(qiáng)。C語言當(dāng)然也有缺點(diǎn),比如實(shí)時(shí)性通常要比匯編差。在編寫匯編的時(shí)候可以清楚的知道每一條指令究竟要多少個(gè)機(jī)器周期,但是在C中掌控準(zhǔn)確的時(shí)間稍微困難一些。C51包含ANSIC關(guān)鍵字的同時(shí),也有針對(duì)51單片機(jī)擴(kuò)展的一些關(guān)鍵字。C51的擴(kuò)展關(guān)鍵字從某種程度上體現(xiàn)了C51語言與標(biāo)準(zhǔn)C語言的不同。例如可重入函數(shù)、存儲(chǔ)模式等等都是標(biāo)準(zhǔn)C中不存在的問題。ANSIC
2、關(guān)鍵字·auto:自動(dòng)變量·double:雙精度類型·int:聲明整型類型·struct:聲明結(jié)構(gòu)體類型·break:跳出當(dāng)前循環(huán)·else:條件語句否定分支(與if連用)·long:聲明長(zhǎng)整型類型·switch:用于開關(guān)語句?·case:開關(guān)語句分支??·enum:聲明枚舉類型·register:聲明寄存器變量·typedef:用以給數(shù)據(jù)類型取別名(當(dāng)然還有其他作用)·char:聲明字符型類型·extern:聲明變量是在其他文件正聲明(也可以看做是引用變量)??·return:子程序返回語句(可以帶參數(shù),也看不帶參數(shù))??·unio
3、n:聲明聯(lián)合數(shù)據(jù)類型·const:聲明只讀變量·float:聲明浮點(diǎn)型類型·short:聲明短整型類型·unsigned:聲明無符號(hào)類型類型·continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)?·for:一種循環(huán)語句(可意會(huì)不可言傳)·signed:生命有符號(hào)類型類型·void:聲明函數(shù)無返回值或無參數(shù),聲明無類型指針(基本上就這三個(gè)作用)·default:開關(guān)語句中的“其他”分支?·goto:無條件跳轉(zhuǎn)語句????·sizeof:計(jì)算數(shù)據(jù)類型長(zhǎng)度??·volatile:說明變量在程序執(zhí)行中可被隱含地改變?·do:循環(huán)語句的循環(huán)體·whi
4、le:循環(huán)語句的循環(huán)條件·static:聲明靜態(tài)變量·if:條件語句C51擴(kuò)展關(guān)鍵字_at_為變量定義存儲(chǔ)空間絕對(duì)地址alien聲明與PL/M51兼容的函數(shù)bdata可位尋址的內(nèi)部RAMbit位類型codeROMcompact使用外部分頁RAM的存儲(chǔ)模式data直接尋址的內(nèi)部RAMidata間接尋址的內(nèi)部RAMinterrupt中斷服務(wù)函數(shù)large使用外部RAM的存儲(chǔ)模式pdata分頁尋址的外部RAM_priority_RTX51的任務(wù)優(yōu)先級(jí)reentrant可重入函數(shù)sbit聲明可位尋址的特殊功能位sfr8位的特殊功能寄存器sfr
5、1616位的特殊功能寄存器small內(nèi)部RAM的存儲(chǔ)模式_task_實(shí)時(shí)任務(wù)函數(shù)using選擇工作寄存器組xdata外部RAMC51的運(yùn)算符與C語言幾乎無異(至今沒有發(fā)現(xiàn)區(qū)別)。算術(shù)運(yùn)算符+加,?一元取正?-減,?一元取負(fù)?*乘?/除%取模?--自減1?++自加1邏輯運(yùn)算符&&邏輯與
6、
7、邏輯或!邏輯非關(guān)系運(yùn)算符>大于>=大于等于<小于<=小于等于==等于!=不等于?位運(yùn)算符號(hào)&按位與
8、按位或^按位異或-按位取反>>右移<<左移復(fù)合運(yùn)算符算術(shù)運(yùn)算符與位運(yùn)算符可以組成符合運(yùn)算符,例如:+=、-=等等。其它運(yùn)算符?expr1?expr2:e
9、xpr3sizeof計(jì)算字節(jié)數(shù)*指針操作&求址[]下表運(yùn)算符->成員訪問運(yùn)算符.成員訪問運(yùn)算符運(yùn)算符在C51中與標(biāo)準(zhǔn)的C語言并沒有什么差異,但是變量卻有一些比較關(guān)鍵的區(qū)別。變量的數(shù)據(jù)類型基本變量類型與標(biāo)準(zhǔn)C語言,C51的基本數(shù)據(jù)類型有char、int、short、long和float。除float外均可以使用signed和unsigned指定有符號(hào)型和無符號(hào)型,默認(rèn)情況下都是signed。char占用一個(gè)字節(jié),int和short都占2個(gè)字節(jié),long占4個(gè)字節(jié),float占4個(gè)字節(jié)。其它數(shù)據(jù)類型指針類型:指針與標(biāo)準(zhǔn)C中的指針概念相同,
10、指向一個(gè)特定的地址(地址存放的可以是變量也可以是函數(shù))。例如:intfunc(inta,intb);int(*pointer)(int,int)=func;其它數(shù)據(jù)類型:enum、struct、union以及數(shù)組。C51專有數(shù)據(jù)類型:bit、sfr、sfr16以及sbit。bit變量存儲(chǔ)在可位尋址區(qū),保存一位二進(jìn)制數(shù)。注:不能用指針指向位變量。sfr和sfr16指的是特殊寄存器變量。sbit聲明的是可位尋址變量的一個(gè)位??晌粚ぶ返淖兞烤褪谴鎯?chǔ)在bdata的變量,以及部分sfr。例如:intbdatabitTest;sbitbit0=b
11、itTest^0;例子中的bit0就是bitTest的第0位。變量的作用域C51的變量分為局部變量和全局變量。變量的存儲(chǔ)種類auto:默認(rèn)register:編譯器盡量將變量放在寄存器中。extern:全局變量,可以在多個(gè)