|
計(jì)算機(jī)只能識(shí)別機(jī)器碼,即0101,根據(jù)這些有序排列的機(jī)器碼的含義(即硬件指令=這些機(jī)器碼),來運(yùn)行程序。任何語言的程序最終都必須轉(zhuǎn)成機(jī)器碼,否則計(jì)算機(jī)不認(rèn)識(shí)。
但0101的機(jī)器碼太不方便記意了。于是就用方便記意的語句代替它,這就產(chǎn)生了兩個(gè)問題:
1、用什么語句替代機(jī)器碼?
2、誰把它再譯回到機(jī)器碼?
計(jì)算機(jī)是外國人發(fā)明的,自然用了英文的語句,不過又帶來了一個(gè)新的問題:
一個(gè)語句替代多少條機(jī)器碼指令?這是回答你問題的關(guān)鍵了:
匯編語言:一個(gè)語句替代一條機(jī)器碼指令,因此它最接近機(jī)器碼,最靈活,也最難掌握。
C語言:一個(gè)語句替代一條或多機(jī)器碼指令,因此它效率高,但不靈活。
至于“誰把它再譯回到機(jī)器碼?”,編程平臺(tái)幫你完成了,最常用的“翻譯”是KELL。
明白上述的道理后,就會(huì)明白:
C是由若干條匯編語句組成的。但這些,用C的人看不出來,因?yàn)镃不關(guān)心匯編,就沒有必要展示給你看,不過想看也看得到,每次對(duì)C程序編譯時(shí),也會(huì)生成匯編代碼。
由于C建立在匯編的基礎(chǔ)上,所以它的規(guī)矩多且嚴(yán)格,稍不小心,平臺(tái)就不認(rèn)識(shí),C語言強(qiáng)力地依賴庫函數(shù)(各種子程序),但通俗易懂易掌握。
匯編則只依據(jù)CPU的指令系統(tǒng)寫程序,天馬行空,任君游。但要求程序員有很強(qiáng)的邏輯、數(shù)學(xué)水平。
例如:開方。對(duì)C語言是一句話的事,而匯編,如你沒有很好的數(shù)學(xué)基礎(chǔ),是根本無法想像得出來的。不過最終的機(jī)器碼目標(biāo)還是一致的。雖然C是一語話的事,也是由匯編寫而來的,只不過不需要你寫,而是前輩們用匯編寫好了,做成了C函數(shù)庫,你直接引用就可以了。
記住:計(jì)算機(jī)、單片機(jī)只認(rèn)識(shí)機(jī)器碼!
|
|