0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

學(xué)習(xí)開發(fā)環(huán)境和編程語(yǔ)言:匯編語(yǔ)言和C語(yǔ)言的比較

h1654155971.7688 ? 來源:未知 ? 作者:李倩 ? 2018-04-10 09:01 ? 次閱讀

今天來學(xué)習(xí)開發(fā)環(huán)境和編程語(yǔ)言。

CPU懂的機(jī)器語(yǔ)言

單片機(jī)的CPU從存儲(chǔ)器讀取程序,但是一次只能讀取一條指令,然后解釋每條指令,并執(zhí)行。存儲(chǔ)器中保存的內(nèi)容,不管是程序還是數(shù)據(jù),都是二進(jìn)制代碼“0”和“1”組成的字符串。指令二進(jìn)制代碼告訴CPU要做什么,而數(shù)據(jù)二進(jìn)制代碼則是CPU操作或處理指令時(shí)要使用的值。CPU的操作包含加、減運(yùn)算等指令。這些像密碼一樣排列的“0”和“1”字符串就是機(jī)器語(yǔ)言。比如圖1左邊顯示的就是一個(gè)機(jī)器語(yǔ)言指令,意思是“將2放入寄存器A(寄存器是CPU內(nèi)部的儲(chǔ)存區(qū)域)。

CPU總是按存儲(chǔ)器地址的順序讀取指令代碼,除非遇到跳躍指令。例如,如果復(fù)位后的地址是0000,則從0000開始按0001、0002、0003的順序讀取并執(zhí)行指令。也可以說,一個(gè)程序就是按處理要求排列一系列的機(jī)器語(yǔ)言。

CPU只能理解如上所述的機(jī)器語(yǔ)言。因此,為了使CPU運(yùn)行,就必須使用機(jī)器語(yǔ)言的程序。但是,機(jī)器語(yǔ)言不易為人們識(shí)別和讀寫。因此,人們用了更簡(jiǎn)單易懂的字符串來代替機(jī)器語(yǔ)言,這就是匯編語(yǔ)言。例如,在“給寄存器A賦值2”這樣的處理時(shí),如果用匯編語(yǔ)言來表示,就很簡(jiǎn)單,請(qǐng)看圖1的右邊部分。匯編語(yǔ)言中,用MOV字符串表示賦值,所以“給寄存器A賦值2”的處理就可用“MOV A,#02”表示。

圖1:機(jī)器語(yǔ)言和 匯編語(yǔ)言的比較

雖然匯編語(yǔ)言比機(jī)器語(yǔ)言更加簡(jiǎn)單易懂了,但是人們讀起來還是挺難理解的。而且,匯編語(yǔ)言還存在另一個(gè)問題,就是不同的CPU,機(jī)器語(yǔ)言的描述方式也不同。因此,如果更換了CPU,就必須改寫與機(jī)器語(yǔ)言有著密不可分關(guān)系的匯編語(yǔ)言,工作量比較大。(以上例子中的機(jī)器語(yǔ)言和匯編語(yǔ)言均為瑞薩的RL78族單片機(jī)中的語(yǔ)言。)

如上所述,每更換一次CPU都必須對(duì)程序進(jìn)行改編,不但造成生產(chǎn)性低下,還加重了編程人員的負(fù)擔(dān)。

人性化的C語(yǔ)言

能夠解決上述問題的編程語(yǔ)言就是C語(yǔ)言。C語(yǔ)言具有不依存于特定的CPU,又具有程序移植性高等的特點(diǎn)。另外,由于編程時(shí)可使用人們熟悉的英文單詞,所以對(duì)編程人員來說C語(yǔ)言是最容易使用的編程語(yǔ)言。下面我們將C語(yǔ)言和匯編語(yǔ)言做一個(gè)簡(jiǎn)單地比較。

圖2:匯編語(yǔ)言和C語(yǔ)言的比較

雖然C語(yǔ)言不依存于CPU而且還是人們最容易使用的編程語(yǔ)言,但對(duì)于CPU來說,C語(yǔ)言卻是一種完全無(wú)法理解的語(yǔ)言。因此,就需要一種可以將C語(yǔ)言翻譯為機(jī)器語(yǔ)言的軟件,這就是被稱為編譯器 (編譯程序) 的軟件。 經(jīng)過編譯器翻譯的程序的文件格式被稱為目標(biāo)文件格式。如果目標(biāo)文件格式最終沒有被配置到存儲(chǔ)器中,CPU就無(wú)法執(zhí)行該程序。

另外,近來由于程序越來越趨于復(fù)雜化,所以幾乎都采取了將一個(gè)程序分割為多個(gè)C語(yǔ)言程序文件的結(jié)構(gòu)。所以,還需要一個(gè)工具將多個(gè)目標(biāo)文件格式匯總成一個(gè)機(jī)器語(yǔ)言并配置到存儲(chǔ)器上,能夠擔(dān)當(dāng)起此重任的就是連接編輯程序(linkage editor,也被稱為“l(fā)inker(鏈接器)”)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10768

    瀏覽量

    210418
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135540
  • 匯編語(yǔ)言
    +關(guān)注

    關(guān)注

    14

    文章

    406

    瀏覽量

    35650

原文標(biāo)題:為什么原來每換一個(gè)CPU就必須改寫程序,但現(xiàn)在不用了?

文章出處:【微信號(hào):weixin21ic,微信公眾號(hào):21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MSP430單片機(jī)C語(yǔ)言和匯編語(yǔ)言混合編程

    `為了發(fā)揮C語(yǔ)言和匯編語(yǔ)言各自的優(yōu)點(diǎn),二者需要相互調(diào)用函數(shù)。本文首先介紹了MSP430單片機(jī)的C語(yǔ)言函數(shù)的參數(shù)傳遞規(guī)則,然后對(duì)
    發(fā)表于 03-02 11:07

    請(qǐng)問C語(yǔ)言和匯編語(yǔ)言進(jìn)行單片機(jī)設(shè)計(jì)那個(gè)比較好?

    大家根據(jù)自己切身學(xué)習(xí)和工作經(jīng)驗(yàn),談?wù)剬?duì)單片機(jī)的程序設(shè)計(jì),C語(yǔ)言和匯編語(yǔ)言哪個(gè)比較好用?各有什么優(yōu)缺點(diǎn)?
    發(fā)表于 03-11 04:48

    C語(yǔ)言和匯編語(yǔ)言的優(yōu)缺點(diǎn)是什么?

    什么是c語(yǔ)言?什么是匯編語(yǔ)言C語(yǔ)言和匯編語(yǔ)言的優(yōu)缺點(diǎn)是什么?
    發(fā)表于 10-14 08:48

    單片機(jī)C語(yǔ)言和匯編語(yǔ)言的混合編程

    第5章單片機(jī)C語(yǔ)言和匯編語(yǔ)言的混合編程第5章單片機(jī)C語(yǔ)言和
    發(fā)表于 01-25 06:47

    MSP430單片機(jī)C語(yǔ)言和匯編語(yǔ)言混合編程

    為了發(fā)揮C語(yǔ)言和匯編語(yǔ)言各自的優(yōu)點(diǎn),二者需要相互調(diào)用函數(shù)。本文首先介紹了MSP430單片機(jī)的C語(yǔ)言函數(shù)的參數(shù)傳遞規(guī)則,然后對(duì)
    發(fā)表于 08-31 10:55 ?50次下載

    MDP430單片機(jī)語(yǔ)言和匯編語(yǔ)言混合編程

    摘要:為了發(fā)揮C語(yǔ)言和匯編語(yǔ)言各自的優(yōu)點(diǎn)二者需要相互調(diào)用函數(shù)本文首先介紹了"MSP430”單片機(jī)的!語(yǔ)言函數(shù)的參數(shù)傳遞規(guī)則然后對(duì)C
    發(fā)表于 07-15 12:02 ?46次下載

    C語(yǔ)言和匯編語(yǔ)言混合編程方法和C語(yǔ)言中斷處理方法

    C語(yǔ)言和匯編語(yǔ)言混合編程方法和C語(yǔ)言中斷處理方法,new
    發(fā)表于 01-06 14:36 ?36次下載

    基于MSP430單片機(jī)C語(yǔ)言和匯編語(yǔ)言混合編程

    基于MSP430單片機(jī)C語(yǔ)言和匯編語(yǔ)言混合編程
    發(fā)表于 10-12 17:05 ?18次下載
    基于MSP430單片機(jī)<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言和</b><b class='flag-5'>匯編語(yǔ)言</b>混合<b class='flag-5'>編程</b>

    MSP430單片機(jī)的C語(yǔ)言和匯編語(yǔ)言混合編程

    MSP430單片機(jī)的C語(yǔ)言和匯編語(yǔ)言混合編程
    發(fā)表于 10-13 08:35 ?24次下載
    MSP430單片機(jī)的<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言和</b><b class='flag-5'>匯編語(yǔ)言</b>混合<b class='flag-5'>編程</b>

    C語(yǔ)言匯編語(yǔ)言相互結(jié)合的嵌套匯編語(yǔ)言

    要提高單片機(jī)技能,必須掌握C 語(yǔ)言編程,因?yàn)?b class='flag-5'>C 語(yǔ)言有強(qiáng)大的模塊化管理思想。我想在很多人學(xué)習(xí)的過
    發(fā)表于 03-14 18:23 ?3451次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>與<b class='flag-5'>匯編語(yǔ)言</b>相互結(jié)合的嵌套<b class='flag-5'>匯編語(yǔ)言</b>

    高級(jí)語(yǔ)言和匯編語(yǔ)言_機(jī)器語(yǔ)言的區(qū)別

    本文首先介紹了高級(jí)語(yǔ)言的優(yōu)缺點(diǎn)、匯編語(yǔ)言的優(yōu)缺點(diǎn)及使用匯編語(yǔ)言的理由,其次介紹了機(jī)器語(yǔ)言的優(yōu)缺點(diǎn),最后闡述了高級(jí)語(yǔ)言和
    的頭像 發(fā)表于 04-16 10:28 ?3w次閱讀

    MSP430單片機(jī)的C語(yǔ)言和匯編語(yǔ)言混合編程的詳細(xì)描述和應(yīng)用實(shí)例

    為了發(fā)揮C語(yǔ)言和匯編語(yǔ)言各自的優(yōu)點(diǎn),二者需要相互調(diào)用函數(shù)。本文首先介紹了MSP430單片機(jī)的C語(yǔ)言函數(shù)的參數(shù)傳遞規(guī)則,然后對(duì)
    發(fā)表于 02-22 17:06 ?20次下載
    MSP430單片機(jī)的<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言和</b><b class='flag-5'>匯編語(yǔ)言</b>混合<b class='flag-5'>編程</b>的詳細(xì)描述和應(yīng)用實(shí)例

    單片機(jī)C語(yǔ)言和匯編語(yǔ)言混合編程實(shí)例詳解

    單片機(jī)C語(yǔ)言和匯編語(yǔ)言混合編程實(shí)例詳解
    發(fā)表于 08-16 09:50 ?225次下載

    "單片機(jī)r6/r7c語(yǔ)言怎么用,第5章MCU混合編程C語(yǔ)言和匯編語(yǔ)言"

    第5章單片機(jī)C語(yǔ)言和匯編語(yǔ)言的混合編程第5章單片機(jī)C語(yǔ)言和
    發(fā)表于 11-30 19:36 ?14次下載
    "單片機(jī)r6/r7<b class='flag-5'>c</b><b class='flag-5'>語(yǔ)言</b>怎么用,第5章MCU混合<b class='flag-5'>編程</b>與<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言和</b><b class='flag-5'>匯編語(yǔ)言</b>"

    單片機(jī)匯編語(yǔ)言和c語(yǔ)言的區(qū)別是什么

    單片機(jī)從誕生到現(xiàn)在,經(jīng)過了將近70年的發(fā)展。眾所周知,單片機(jī)是可以通過編寫程序?qū)崿F(xiàn)產(chǎn)品的功能,這么多年來,單片機(jī)的規(guī)格并沒有多大變化,而單片機(jī)編程一般使用的都是匯編語(yǔ)言和c語(yǔ)言。那么,
    發(fā)表于 06-21 16:59 ?6308次閱讀