芒果视频下载

Assembly language
#編程語言# 0 0
Assembly language(匯編語言)是任何一種用于電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。Assembly language能夠輕松讀取存儲器狀態以及I/O接口情況,可以準確高效的被執行,具有很強的擴展性。它也具有代碼冗長、編寫困難、容易出BUG而且比較難調試、代碼兼容性差、后期維護不易等缺點。
  • 中文名稱: 匯編語言
  • 外文名稱: Assembly Language
  • 發布時間: 20世紀50年代
詳細介紹 PROFILE +

基本介紹

匯(hui)(hui)(hui)編語(yu)言(yan)(yan)(Assembly Language)是(shi)(shi)任何一種用于電子計算機、微處理器(qi)(qi)、微控(kong)制器(qi)(qi)或(huo)其他可編程器(qi)(qi)件的(de)(de)低級語(yu)言(yan)(yan),亦稱為符(fu)號(hao)(hao)語(yu)言(yan)(yan)。在匯(hui)(hui)(hui)編語(yu)言(yan)(yan)中(zhong),用助記符(fu)代替機器(qi)(qi)指(zhi)令的(de)(de)操作碼,用地址符(fu)號(hao)(hao)或(huo)標號(hao)(hao)代替指(zhi)令或(huo)操作數的(de)(de)地址。在不(bu)同的(de)(de)設備中(zhong),匯(hui)(hui)(hui)編語(yu)言(yan)(yan)對應著(zhu)不(bu)同的(de)(de)機器(qi)(qi)語(yu)言(yan)(yan)指(zhi)令集(ji),通(tong)過匯(hui)(hui)(hui)編過程轉換成機器(qi)(qi)指(zhi)令。特(te)定的(de)(de)匯(hui)(hui)(hui)編語(yu)言(yan)(yan)和特(te)定的(de)(de)機器(qi)(qi)語(yu)言(yan)(yan)指(zhi)令集(ji)是(shi)(shi)一一對應的(de)(de),不(bu)同平臺之間不(bu)可直接移植(zhi)。

簡介

匯編(bian)語(yu)言,即第二代(dai)(dai)計算(suan)(suan)機語(yu)言,用(yong)(yong)(yong)一些容易理(li)解(jie)和(he)(he)記憶(yi)的(de)(de)(de)(de)縮寫單(dan)詞來代(dai)(dai)替一些特(te)(te)定的(de)(de)(de)(de)指令(ling),例如:用(yong)(yong)(yong)"ADD"代(dai)(dai)表(biao)加(jia)(jia)法操作(zuo)(zuo)指令(ling),"SUB"代(dai)(dai)表(biao)減(jian)法操作(zuo)(zuo)指令(ling),以及"INC"代(dai)(dai)表(biao)增(zeng)加(jia)(jia)1,"DEC"代(dai)(dai)表(biao)減(jian)去(qu)1,"MOV"代(dai)(dai)表(biao)變(bian)量(liang)傳(chuan)遞(di)等等,通過這種方法,人(ren)們很(hen)容易去(qu)閱讀(du)已經完成(cheng)的(de)(de)(de)(de)程(cheng)(cheng)(cheng)序(xu)(xu)或者理(li)解(jie)程(cheng)(cheng)(cheng)序(xu)(xu)正在(zai)執(zhi)行(xing)的(de)(de)(de)(de)功(gong)能,對現(xian)有程(cheng)(cheng)(cheng)序(xu)(xu)的(de)(de)(de)(de)bug修復以及運營維護都(dou)變(bian)得(de)更加(jia)(jia)簡單(dan)方便。但(dan)計算(suan)(suan)機的(de)(de)(de)(de)硬(ying)件不(bu)認識(shi)字母符(fu)號,這時候就需(xu)要一個專(zhuan)門的(de)(de)(de)(de)程(cheng)(cheng)(cheng)序(xu)(xu)把這些字符(fu)變(bian)成(cheng)計算(suan)(suan)機能夠識(shi)別的(de)(de)(de)(de)二進(jin)制數(shu)或機器(qi)語(yu)言。因為匯編(bian)語(yu)言只是(shi)將機器(qi)語(yu)言做(zuo)了簡單(dan)編(bian)譯,所以并沒有根(gen)本上(shang)解(jie)決機器(qi)語(yu)言的(de)(de)(de)(de)特(te)(te)定性(xing)(xing),所以匯編(bian)語(yu)言和(he)(he)機器(qi)自身的(de)(de)(de)(de)編(bian)程(cheng)(cheng)(cheng)環境息(xi)息(xi)相關,推(tui)廣和(he)(he)移植很(hen)難,但(dan)是(shi)還是(shi)保(bao)持了機器(qi)語(yu)言優秀的(de)(de)(de)(de)執(zhi)行(xing)效率(lv),因為他的(de)(de)(de)(de)可閱讀(du)性(xing)(xing)和(he)(he)簡便性(xing)(xing),匯編(bian)語(yu)言到現(xian)在(zai)依然是(shi)常(chang)用(yong)(yong)(yong)的(de)(de)(de)(de)編(bian)程(cheng)(cheng)(cheng)語(yu)言之(zhi)一。匯編(bian)語(yu)言不(bu)像(xiang)其他大多數(shu)的(de)(de)(de)(de)程(cheng)(cheng)(cheng)序(xu)(xu)設(she)計語(yu)言一樣被廣泛用(yong)(yong)(yong)于(yu)程(cheng)(cheng)(cheng)序(xu)(xu)設(she)計。在(zai)今天(tian)的(de)(de)(de)(de)實(shi)(shi)際應(ying)用(yong)(yong)(yong)中,它通常(chang)被應(ying)用(yong)(yong)(yong)在(zai)底層,硬(ying)件操作(zuo)(zuo)和(he)(he)高(gao)要求(qiu)的(de)(de)(de)(de)程(cheng)(cheng)(cheng)序(xu)(xu)優化的(de)(de)(de)(de)場合。驅動程(cheng)(cheng)(cheng)序(xu)(xu)、嵌入式操作(zuo)(zuo)系統(tong)和(he)(he)實(shi)(shi)時運行(xing)程(cheng)(cheng)(cheng)序(xu)(xu)都(dou)需(xu)要匯編(bian)語(yu)言。

發展歷程

編程語言

自從1946年世(shi)(shi)界(jie)上第一臺電子計算機(ji)(ji)(ji)問世(shi)(shi),人(ren)類和機(ji)(ji)(ji)器的(de)交流方式和語(yu)(yu)言(yan)(yan)(yan)就(jiu)成(cheng)為了(le)軟件(jian)工程(cheng)(cheng)師(shi)和計算機(ji)(ji)(ji)從業者的(de)主要(yao)研究(jiu)方向(xiang),更有效更簡便的(de)編(bian)程(cheng)(cheng)語(yu)(yu)言(yan)(yan)(yan)成(cheng)為了(le)軟件(jian)工程(cheng)(cheng)師(shi)的(de)新寵兒,伴隨著計算機(ji)(ji)(ji)的(de)飛速發展,計算機(ji)(ji)(ji)的(de)硬件(jian)升級速度也越來(lai)越快,對編(bian)程(cheng)(cheng)語(yu)(yu)言(yan)(yan)(yan)的(de)要(yao)求也日益嚴格。在過去的(de)幾十(shi)年,編(bian)程(cheng)(cheng)語(yu)(yu)言(yan)(yan)(yan)有了(le)長(chang)足的(de)發展,至今(jin)已經(jing)有四代(dai)語(yu)(yu)言(yan)(yan)(yan)問世(shi)(shi)。大(da)量的(de)編(bian)程(cheng)(cheng)語(yu)(yu)言(yan)(yan)(yan)為了(le)滿足不(bu)同領域的(de)編(bian)程(cheng)(cheng)要(yao)求和軟件(jian)功能,經(jing)歷了(le)被(bei)修(xiu)改,被(bei)取代(dai),被(bei)發展等(deng)過程(cheng)(cheng),最終(zhong)發展成(cheng)了(le)現(xian)在編(bian)程(cheng)(cheng)語(yu)(yu)言(yan)(yan)(yan)的(de)多樣化(hua)。盡(jin)管人(ren)們多次試圖尋找一個能夠(gou)適應所(suo)有編(bian)程(cheng)(cheng)環境的(de)通用(yong)語(yu)(yu)言(yan)(yan)(yan),但是卻沒有一次成(cheng)功。程(cheng)(cheng)序設計語(yu)(yu)言(yan)(yan)(yan)正在與現(xian)代(dai)科技日益飛躍,人(ren)類的(de)智(zhi)慧在日益彰顯。

機器語言

計(ji)算機(ji)(ji)(ji)的(de)(de)(de)硬(ying)件作為(wei)(wei)一種電路(lu)元(yuan)件,它的(de)(de)(de)輸出和輸入只(zhi)(zhi)能(neng)是有(you)電或者(zhe)沒(mei)電,也就(jiu)(jiu)是所(suo)(suo)(suo)說的(de)(de)(de)高電平(ping)和低電平(ping),所(suo)(suo)(suo)以(yi)計(ji)算機(ji)(ji)(ji)傳遞的(de)(de)(de)數(shu)據是由(you)(you)“0”和“1”組成(cheng)的(de)(de)(de)二進制(zhi)(zhi)(zhi)(zhi)數(shu),所(suo)(suo)(suo)以(yi)說二進制(zhi)(zhi)(zhi)(zhi)的(de)(de)(de)語(yu)(yu)言(yan)是計(ji)算機(ji)(ji)(ji)語(yu)(yu)言(yan)的(de)(de)(de)本(ben)質。計(ji)算機(ji)(ji)(ji)發明之初,人們為(wei)(wei)了(le)(le)去控制(zhi)(zhi)(zhi)(zhi)計(ji)算機(ji)(ji)(ji)完成(cheng)自(zi)己的(de)(de)(de)任務或者(zhe)項目(mu),只(zhi)(zhi)能(neng)去編(bian)(bian)寫“0”、“1”這(zhe)樣的(de)(de)(de)二進制(zhi)(zhi)(zhi)(zhi)數(shu)字串(chuan)去控制(zhi)(zhi)(zhi)(zhi)電腦(nao),其實就(jiu)(jiu)是控制(zhi)(zhi)(zhi)(zhi)計(ji)算機(ji)(ji)(ji)硬(ying)件的(de)(de)(de)高低電平(ping)或通路(lu)開(kai)路(lu),這(zhe)種語(yu)(yu)言(yan)就(jiu)(jiu)是機(ji)(ji)(ji)器(qi)語(yu)(yu)言(yan)。直觀上看,機(ji)(ji)(ji)器(qi)語(yu)(yu)言(yan)十分晦澀(se)難(nan)懂,其中的(de)(de)(de)含義往往要(yao)通過(guo)查(cha)表(biao)或者(zhe)手(shou)冊才能(neng)理(li)解,使用的(de)(de)(de)時候非常痛苦,尤其當你需(xu)要(yao)修改已經完成(cheng)的(de)(de)(de)程序(xu)(xu)(xu)時,這(zhe)種看起來(lai)無(wu)序(xu)(xu)(xu)的(de)(de)(de)機(ji)(ji)(ji)器(qi)語(yu)(yu)言(yan)會(hui)讓你無(wu)從下手(shou),也很難(nan)找(zhao)到程序(xu)(xu)(xu)的(de)(de)(de)錯誤。而(er)且(qie),不同(tong)計(ji)算機(ji)(ji)(ji)的(de)(de)(de)運(yun)行(xing)環境不同(tong),指令方式操作方式也不盡相同(tong),所(suo)(suo)(suo)以(yi)當你在(zai)這(zhe)種機(ji)(ji)(ji)器(qi)語(yu)(yu)言(yan)就(jiu)(jiu)有(you)了(le)(le)特定(ding)性,只(zhi)(zhi)能(neng)在(zai)特定(ding)的(de)(de)(de)計(ji)算機(ji)(ji)(ji)上執行(xing),而(er)一旦換了(le)(le)機(ji)(ji)(ji)器(qi)就(jiu)(jiu)需(xu)要(yao)重新(xin)編(bian)(bian)程,這(zhe)極大的(de)(de)(de)降低了(le)(le)程序(xu)(xu)(xu)的(de)(de)(de)使用和推廣效率。但由(you)(you)于(yu)機(ji)(ji)(ji)器(qi)語(yu)(yu)言(yan)具有(you)特定(ding)性,完美(mei)適配特定(ding)型號的(de)(de)(de)計(ji)算機(ji)(ji)(ji),故而(er)運(yun)行(xing)效率遠(yuan)遠(yuan)高過(guo)其他語(yu)(yu)言(yan)。機(ji)(ji)(ji)器(qi)語(yu)(yu)言(yan),也就(jiu)(jiu)是第一代編(bian)(bian)程語(yu)(yu)言(yan)。

匯編語言

不(bu)難看(kan)出機器語(yu)言(yan)(yan)(yan)作為(wei)一種編程語(yu)言(yan)(yan)(yan),靈活性較(jiao)差(cha)可閱讀性也很差(cha),為(wei)了減(jian)輕機器語(yu)言(yan)(yan)(yan)帶給軟件工(gong)程師的(de)不(bu)適應,人們(men)對機器語(yu)言(yan)(yan)(yan)進(jin)行了升(sheng)級和改進(jin):用一些容易理解(jie)和記憶的(de)字母(mu),單(dan)詞來代替(ti)一個特定的(de)指令(ling)。通過這種方法,人們(men)很容易去閱讀已(yi)經完成的(de)程序(xu)或者理解(jie)程序(xu)正在執行的(de)功能,對現有程序(xu)的(de)bug修復以及運營維護都變得更加簡單(dan)方便,這種語(yu)言(yan)(yan)(yan)就是我們(men)所說的(de)匯編語(yu)言(yan)(yan)(yan),即(ji)第二(er)代計算機語(yu)言(yan)(yan)(yan)。

比起機器(qi)(qi)語言(yan)(yan)(yan),匯編(bian)語言(yan)(yan)(yan)具有更高(gao)的機器(qi)(qi)相關性,更加便(bian)于記憶和書寫(xie),但又(you)同時保留了(le)機器(qi)(qi)語言(yan)(yan)(yan)高(gao)速(su)度(du)(du)和高(gao)效率的特點。匯編(bian)語言(yan)(yan)(yan)仍是面向(xiang)機器(qi)(qi)的語言(yan)(yan)(yan),很難從其代碼上理(li)解程序設計(ji)意圖,設計(ji)出(chu)來的程序不易被移植,故不像其他大多數的高(gao)級計(ji)算機語言(yan)(yan)(yan)一樣被廣泛應用。所以在高(gao)級語言(yan)(yan)(yan)高(gao)度(du)(du)發展的今天,它通常被用在底層,通常是程序優化或硬件操作的場合。

高級語言

在(zai)編(bian)(bian)程(cheng)(cheng)語(yu)言(yan)經歷(li)了(le)機(ji)器(qi)語(yu)言(yan),匯(hui)編(bian)(bian)語(yu)言(yan)等(deng)更新之后(hou),人(ren)們發現(xian)了(le)限制程(cheng)(cheng)序(xu)推廣的(de)(de)(de)關鍵因素(su)——程(cheng)(cheng)序(xu)的(de)(de)(de)可(ke)移植性。需要(yao)設(she)計(ji)(ji)(ji)一(yi)個(ge)(ge)能夠不(bu)(bu)依(yi)賴(lai)于計(ji)(ji)(ji)算(suan)(suan)(suan)機(ji)硬(ying)件,能夠在(zai)不(bu)(bu)同(tong)機(ji)器(qi)上運(yun)行(xing)的(de)(de)(de)程(cheng)(cheng)序(xu)。這樣可(ke)以(yi)免去很多編(bian)(bian)程(cheng)(cheng)的(de)(de)(de)重復過程(cheng)(cheng),提高效率(lv),同(tong)時(shi)(shi)這種語(yu)言(yan)又要(yao)接近于數學語(yu)言(yan)或人(ren)的(de)(de)(de)自然(ran)語(yu)言(yan)。在(zai)計(ji)(ji)(ji)算(suan)(suan)(suan)機(ji)還很稀(xi)缺的(de)(de)(de)50年(nian)代,誕生了(le)第一(yi)個(ge)(ge)高級(ji)(ji)編(bian)(bian)程(cheng)(cheng)語(yu)言(yan)。當時(shi)(shi)計(ji)(ji)(ji)算(suan)(suan)(suan)機(ji)的(de)(de)(de)造價不(bu)(bu)菲(fei),但(dan)是每天的(de)(de)(de)計(ji)(ji)(ji)算(suan)(suan)(suan)量(liang)又有限,如何有效的(de)(de)(de)利用計(ji)(ji)(ji)算(suan)(suan)(suan)機(ji)有限的(de)(de)(de)計(ji)(ji)(ji)算(suan)(suan)(suan)能力成為(wei)了(le)當時(shi)(shi)人(ren)們面對(dui)的(de)(de)(de)問題。同(tong)時(shi)(shi),因為(wei)資源的(de)(de)(de)稀(xi)缺,計(ji)(ji)(ji)算(suan)(suan)(suan)機(ji)的(de)(de)(de)運(yun)行(xing)效率(lv)也(ye)成為(wei)了(le)那個(ge)(ge)年(nian)代工程(cheng)(cheng)師追(zhui)(zhui)尋的(de)(de)(de)目標。為(wei)了(le)更高效的(de)(de)(de)使用計(ji)(ji)(ji)算(suan)(suan)(suan)機(ji),人(ren)們設(she)計(ji)(ji)(ji)出了(le)高級(ji)(ji)編(bian)(bian)程(cheng)(cheng)語(yu)言(yan),來滿(man)足(zu)人(ren)們對(dui)于高效簡潔的(de)(de)(de)編(bian)(bian)程(cheng)(cheng)語(yu)言(yan)的(de)(de)(de)追(zhui)(zhui)求。

產品設計

語言組成

由(you)于匯(hui)編(bian)指(zhi)令(ling)(ling)(ling)系統(tong)龐大(da),因而需構建指(zhi)令(ling)(ling)(ling)系統(tong)體系,其(qi)指(zhi)令(ling)(ling)(ling)數量龐大(da),格式(shi)(shi)(shi)復(fu)雜,可記憶性差等。指(zhi)令(ling)(ling)(ling)中最難的(de)是(shi)指(zhi)令(ling)(ling)(ling)所(suo)支持的(de)尋址方式(shi)(shi)(shi),其(qi)實質(zhi)就是(shi)指(zhi)令(ling)(ling)(ling)中操作(zuo)數如何(he)獲取。對(dui)于處理(li)器(qi)而言,就是(shi)如何(he)找(zhao)到(dao)他所(suo)需的(de)數據(ju)。但對(dui)于計(ji)算機(ji)底(di)層(ceng)的(de)匯(hui)編(bian)語言而言,這種(zhong)尋址方式(shi)(shi)(shi)將涉及(ji)大(da)量的(de)計(ji)算存儲格式(shi)(shi)(shi),與(yu)復(fu)雜的(de)存儲管理(li)方式(shi)(shi)(shi)緊密相關,因而難以理(li)解。最后(hou),匯(hui)編(bian)指(zhi)令(ling)(ling)(ling)還關系到(dao)如何(he)影響標志位(wei),但處理(li)器(qi)標志位(wei)非常復(fu)雜,因而對(dui)其(qi)機(ji)制掌握就比較困難。

傳送指令

包括通(tong)用數據(ju)傳(chuan)送指(zhi)令(ling)(ling)MOV、條件傳(chuan)送指(zhi)令(ling)(ling)CMOVcc、堆棧操作(zuo)指(zhi)令(ling)(ling)PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交換指(zhi)令(ling)(ling)XCHG/XLAT/BSWAP、地址或段描(miao)述符選(xuan)擇子傳(chuan)送指(zhi)令(ling)(ling)LEA/LDS/LES/LFS/LGS/LSS等。

邏輯運算

這部分指(zhi)令(ling)(ling)(ling)用于執行算術(shu)和邏輯運(yun)(yun)算,包括加(jia)法(fa)指(zhi)令(ling)(ling)(ling)ADD/ADC、減(jian)(jian)法(fa)指(zhi)令(ling)(ling)(ling)SUB/SBB、加(jia)一指(zhi)令(ling)(ling)(ling)INC、減(jian)(jian)一指(zhi)令(ling)(ling)(ling)DEC、比較操作指(zhi)令(ling)(ling)(ling)CMP、乘法(fa)指(zhi)令(ling)(ling)(ling)MUL/IMUL、除法(fa)指(zhi)令(ling)(ling)(ling)DIV/IDIV、符號擴展指(zhi)令(ling)(ling)(ling)CBW/CWDE/CDQE、十(shi)進制調整(zheng)指(zhi)令(ling)(ling)(ling)DAA/DAS/AAA/AAS、邏輯運(yun)(yun)算指(zhi)令(ling)(ling)(ling)NOT/AND/OR/XOR/TEST等(deng)。

移位指令

這部分(fen)指(zhi)(zhi)令(ling)(ling)用于將寄存器或內存操作(zuo)數移動(dong)指(zhi)(zhi)定的次數。包括邏(luo)輯左移指(zhi)(zhi)令(ling)(ling)SHL、邏(luo)輯右移指(zhi)(zhi)令(ling)(ling)SHR、算(suan)術左移指(zhi)(zhi)令(ling)(ling)SAL、算(suan)術右移指(zhi)(zhi)令(ling)(ling)SAR、循環左移指(zhi)(zhi)令(ling)(ling)ROL、循環右移指(zhi)(zhi)令(ling)(ling)ROR等(deng)。

位操作

這(zhe)部分指(zhi)(zhi)令(ling)包括位(wei)測(ce)試指(zhi)(zhi)令(ling)BT、位(wei)測(ce)試并(bing)置位(wei)指(zhi)(zhi)令(ling)BTS、位(wei)測(ce)試并(bing)復位(wei)指(zhi)(zhi)令(ling)BTR、位(wei)測(ce)試并(bing)取反指(zhi)(zhi)令(ling)BTC、位(wei)向(xiang)前(qian)掃描指(zhi)(zhi)令(ling)BSF、位(wei)向(xiang)后(hou)掃描指(zhi)(zhi)令(ling)BSR等。

控制轉移

這部分包(bao)括無條件(jian)轉(zhuan)(zhuan)移(yi)指(zhi)令JMP、條件(jian)轉(zhuan)(zhuan)移(yi)指(zhi)令JCC/JCXZ、循(xun)環指(zhi)令LOOP/LOOPE/LOOPNE、過程調用指(zhi)令CALL、子過程返回指(zhi)令RET、中斷指(zhi)令INTn、INT3、INTO、IRET等。

串操作

這部分(fen)指(zhi)令用于(yu)對數(shu)據串(chuan)進(jin)行操作,包(bao)括串(chuan)傳送指(zhi)令MOVS、串(chuan)比較指(zhi)令CMPS、串(chuan)掃描指(zhi)令SCANS、串(chuan)加載指(zhi)令LODS、串(chuan)保(bao)存指(zhi)令STOS,這些指(zhi)令可以有選擇(ze)地使(shi)用REP/REPE/REPZ/REPNE和REPNZ的(de)前(qian)綴以連續操作。

輸入輸出

這部分指(zhi)令(ling)(ling)用于同外圍設備交(jiao)換數據,包括端口輸入指(zhi)令(ling)(ling)IN/INS、端口輸出指(zhi)令(ling)(ling)OUT/OUTS。

特色功能

語言特點

匯編(bian)語(yu)言(yan)是計算(suan)機提供給(gei)用戶的(de)最(zui)快(kuai)最(zui)有(you)(you)效的(de)語(yu)言(yan),也(ye)是能夠(gou)利用計算(suan)機的(de)所(suo)有(you)(you)硬(ying)件特性并能夠(gou)直接控制硬(ying)件的(de)唯(wei)一語(yu)言(yan)。但是由于(yu)編(bian)寫(xie)和調(diao)試匯編(bian)語(yu)言(yan)程(cheng)序要比高級語(yu)言(yan)復雜,因(yin)此目前其應用不如高級語(yu)言(yan)廣泛。

匯(hui)編語言比機器語言的(de)可(ke)讀性要(yao)好,但跟高級(ji)(ji)語言比較而言,可(ke)讀性還是較差。不過采用(yong)它編寫的(de)程(cheng)序具(ju)有存儲空(kong)間(jian)占用(yong)少、執行速度快的(de)特點,這些是高級(ji)(ji)語言所無法取(qu)代的(de)。在實際應(ying)用(yong)中(zhong),是否使(shi)用(yong)匯(hui)編語言,取(qu)決于(yu)具(ju)體應(ying)用(yong)要(yao)求、開發時間(jian)和(he)質量等方面作權衡。

優點

匯編語言(yan)作為機器(qi)語言(yan)之上(shang)的第二代編程(cheng)語言(yan),它(ta)也有很多優點:

可以(yi)輕(qing)松的讀取存儲器狀(zhuang)態以(yi)及硬件(jian)I/O接(jie)口情況

編(bian)寫的(de)(de)代碼因為少了很多(duo)編(bian)譯的(de)(de)環節(jie),可以能夠準確的(de)(de)被(bei)執行

作為(wei)一種低級語(yu)言,可(ke)擴展(zhan)性很(hen)高

缺點

因為代碼(ma)非常(chang)單調(diao),特殊指令字符(fu)很少,所以造(zao)成了代碼(ma)的冗長(chang)以及(ji)編(bian)寫的困難

因為匯編仍(reng)然需要自(zi)己(ji)去(qu)調用存儲(chu)(chu)器存儲(chu)(chu)數(shu)據,很容(rong)易出現BUG,而且調試起(qi)來也不容(rong)易

就算完成了一個程序,后(hou)期(qi)維護時候也需要耗費大量(liang)的時間。

因為機器的(de)特殊性(xing)(xing)造成了代碼兼容性(xing)(xing)差的(de)缺(que)陷。

對比高級語言

區別

匯(hui)編語言的特(te)點是(shi)容易被計算機識(shi)別和(he)執行(xing),使用它進行(xing)編程(cheng)可(ke)以(yi)減少占用空間、提(ti)高運(yun)行(xing)速(su)度(du),并能直(zhi)接對(dui)硬件實施控制。在(zai)需要實時控制的時候,有著(zhu)不可(ke)替代的重要地位,但匯(hui)編語言在(zai)編程(cheng)和(he)理解時要復雜、困難一些,尤其是(shi)在(zai)進行(xing)數據處理或是(shi)邏輯運(yun)算時更加凸(tu)顯出其劣勢(shi)。

高(gao)級語言是面向使用者的(de)(de)語言,能更準確地被程(cheng)序(xu)員所(suo)理解,它的(de)(de)表達能力強,功能多,編(bian)程(cheng)效(xiao)率高(gao),上(shang)手(shou)速度快(kuai),自動(dong)化程(cheng)度高(gao),因而更受歡迎。在(zai)(zai)大部分軟件開發中,使用者都采用高(gao)級語言編(bian)程(cheng),以(yi)提(ti)高(gao)編(bian)程(cheng)效(xiao)率。但在(zai)(zai)要求存儲空間小,執(zhi)行速度快(kuai),需直接(jie)對(dui)硬(ying)件進行控制(zhi)的(de)(de)場合,則(ze)應用匯編(bian)語言編(bian)程(cheng),以(yi)達到優化程(cheng)序(xu)速度的(de)(de)目的(de)(de)。

聯系

這(zhe)樣(yang)兩種(zhong)看似(si)差別很大的(de)(de)(de)語(yu)(yu)(yu)言(yan)(yan),它們(men)之(zhi)間又有(you)著緊(jin)密(mi)的(de)(de)(de)聯系(xi)。在一些程(cheng)(cheng)序設(she)計當中(zhong)(zhong),如果把兩者(zhe)結合(he)起來(lai)(lai)(lai)使(shi)用(yong)(yong),將兩種(zhong)語(yu)(yu)(yu)言(yan)(yan)的(de)(de)(de)優勢(shi)同時(shi)發揮(hui)(hui)出來(lai)(lai)(lai),則可(ke)(ke)(ke)以(yi)(yi)解決(jue)很多特性難(nan)題。在許多程(cheng)(cheng)序的(de)(de)(de)設(she)計當中(zhong)(zhong),高(gao)級(ji)語(yu)(yu)(yu)言(yan)(yan)和匯(hui)編(bian)語(yu)(yu)(yu)言(yan)(yan)可(ke)(ke)(ke)以(yi)(yi)相(xiang)互(hu)(hu)交叉調(diao)用(yong)(yong),進行(xing)參數傳遞(di),共享數據信息,這(zhe)便是所(suo)謂的(de)(de)(de)混(hun)合(he)編(bian)程(cheng)(cheng)。程(cheng)(cheng)序員往往在高(gao)級(ji)語(yu)(yu)(yu)言(yan)(yan)程(cheng)(cheng)序中(zhong)(zhong)直接嵌入匯(hui)編(bian)語(yu)(yu)(yu)句,以(yi)(yi)實(shi)現(xian)對(dui)硬件直接進行(xing)控制的(de)(de)(de)功能,這(zhe)是混(hun)合(he)編(bian)程(cheng)(cheng)中(zhong)(zhong)常(chang)見的(de)(de)(de)做(zuo)法。也可(ke)(ke)(ke)以(yi)(yi)在高(gao)級(ji)語(yu)(yu)(yu)言(yan)(yan)程(cheng)(cheng)序中(zhong)(zhong)使(shi)用(yong)(yong)匯(hui)編(bian)語(yu)(yu)(yu)言(yan)(yan)中(zhong)(zhong)定義(yi)的(de)(de)(de)變量和常(chang)量,或使(shi)用(yong)(yong)內部函數對(dui)匯(hui)編(bian)語(yu)(yu)(yu)句進行(xing)調(diao)用(yong)(yong)。簡而(er)言(yan)(yan)之(zhi),這(zhe)類混(hun)合(he)編(bian)程(cheng)(cheng)的(de)(de)(de)方(fang)法可(ke)(ke)(ke)以(yi)(yi)讓高(gao)級(ji)語(yu)(yu)(yu)言(yan)(yan)與匯(hui)編(bian)語(yu)(yu)(yu)言(yan)(yan)互(hu)(hu)相(xiang)取長補短,各(ge)自發揮(hui)(hui)各(ge)自優勢(shi),同時(shi)減少(shao)各(ge)自缺點(dian)所(suo)帶(dai)來(lai)(lai)(lai)的(de)(de)(de)不便,善用(yong)(yong)這(zhe)個方(fang)法可(ke)(ke)(ke)以(yi)(yi)使(shi)開發和編(bian)程(cheng)(cheng)工作達到(dao)事半功倍的(de)(de)(de)效果。

相關技術

匯編器

典型的(de)(de)現(xian)代匯編器(qi)(Assembler)建造目標代碼(ma)(ma),由(you)解譯組語(yu)指令集(ji)的(de)(de)易記碼(ma)(ma)(Mnemonics)到(dao)操作(zuo)碼(ma)(ma)(OpCode),并解析符(fu)號(hao)名(ming)稱(cheng)(Symbolic Names)成為(wei)存儲器(qi)地址以及其(qi)它的(de)(de)實體。使(shi)用符(fu)號(hao)參考(kao)是匯編器(qi)的(de)(de)一(yi)個(ge)重要特征,它可(ke)以節省修改程序后人工轉(zhuan)址的(de)(de)乏味耗時(shi)計算。基本(ben)就是把(ba)機器(qi)碼(ma)(ma)變成一(yi)些字母而(er)已(yi),編譯的(de)(de)時(shi)候再把(ba)輸入的(de)(de)指令字母替換(huan)成為(wei)晦(hui)澀(se)難懂(dong)機器(qi)碼(ma)(ma)。

編譯環境

用匯編(bian)語言(yan)等非機(ji)器語言(yan)書寫(xie)好(hao)的(de)符號(hao)程序稱為(wei)源程序,匯編(bian)語言(yan)編(bian)譯(yi)器的(de)作(zuo)用是將源程序翻譯(yi)成(cheng)目標(biao)程序。目標(biao)程序是機(ji)器語言(yan)程序,當它(ta)被安置(zhi)在內(nei)存的(de)預定位置(zhi)上后(hou),就能被計算機(ji)的(de)CPU處理和執行。

匯編(bian)的(de)調試環境總的(de)來(lai)(lai)說(shuo)比較少(shao),也很少(shao)有非常好的(de)編(bian)譯器(qi)。編(bian)譯器(qi)的(de)選擇(ze)依賴于目標處理(li)(li)器(qi)的(de)類型和(he)具體的(de)系統(tong)平臺。一般(ban)來(lai)(lai)說(shuo),功能良(liang)好的(de)編(bian)譯器(qi)用(yong)起(qi)來(lai)(lai)應當(dang)非常方便(bian),比如,應當(dang)可以自動整理(li)(li)格(ge)式(shi)、語法高(gao)亮顯示,集編(bian)譯、鏈接和(he)調試為(wei)一體,方便(bian)實用(yong)。

對于廣泛使用的(de)個(ge)人計算(suan)機來(lai)說(shuo),可以(yi)自由選擇的(de)匯(hui)編(bian)語言編(bian)譯(yi)器有(you)MASM、NASM、TASM、GAS、FASM、RADASM等,但(dan)大(da)都不具備調試功能。如果(guo)是(shi)為了學(xue)習匯(hui)編(bian)語言,輕松(song)匯(hui)編(bian)因為擁有(you)一(yi)個(ge)完善的(de)集成環境,是(shi)一(yi)款非常適(shi)合初學(xue)者的(de)匯(hui)編(bian)編(bian)譯(yi)器。

品牌介紹

發展前景

隨著現(xian)代(dai)軟件(jian)(jian)系統越(yue)來越(yue)龐大(da)復雜(za),大(da)量(liang)經過了封裝的(de)(de)(de)高(gao)級語(yu)(yu)言如C/C++,Pascal/Object Pascal也應運(yun)而(er)生。這些(xie)新的(de)(de)(de)語(yu)(yu)言使得程序員在開(kai)發(fa)過程中能(neng)夠(gou)更(geng)簡單,更(geng)有效率,使軟件(jian)(jian)開(kai)發(fa)人員得以(yi)應付(fu)快速的(de)(de)(de)軟件(jian)(jian)開(kai)發(fa)的(de)(de)(de)要求(qiu)。而(er)匯編語(yu)(yu)言由(you)于(yu)(yu)其復雜(za)性使得其適(shi)用(yong)領域逐步減小。但這并不意味著匯編已無用(yong)武之(zhi)地。由(you)于(yu)(yu)匯編更(geng)接近機器語(yu)(yu)言,能(neng)夠(gou)直接對硬件(jian)(jian)進(jin)行操(cao)作,生成的(de)(de)(de)程序與其他的(de)(de)(de)語(yu)(yu)言相比具有更(geng)高(gao)的(de)(de)(de)運(yun)行速度,占用(yong)更(geng)小的(de)(de)(de)內存,因此在一些(xie)對于(yu)(yu)時效性要求(qiu)很高(gao)的(de)(de)(de)程序、許多(duo)大(da)型(xing)程序的(de)(de)(de)核心模塊以(yi)及工業控制(zhi)方面大(da)量(liang)應用(yong)。

雖然隨著(zhu)半導體技(ji)術、編程技(ji)術的(de)(de)(de)不斷發展,在實際工程應用中確實很少看到匯編語言(yan)(yan)的(de)(de)(de)身影,但這并不能說明(ming)匯編語言(yan)(yan)沒用,已被其(qi)他(ta)高級語言(yan)(yan)所取代(dai)。嵌入式系統的(de)(de)(de)底層(ceng)驅動(dong)、計算(suan)機的(de)(de)(de)BIOS還是要用匯編語言(yan)(yan)實現(xian)。匯編語言(yan)(yan)是培養學生理(li)(li)解硬件資源的(de)(de)(de)語言(yan)(yan),是學習(xi)和(he)理(li)(li)解其(qi)他(ta)高級程序(xu)設(she)計語言(yan)(yan)的(de)(de)(de)基(ji)礎(chu),是計算(suan)機組成原理(li)(li)、接(jie)口與通(tong)信(xin)技(ji)術、計算(suan)機控制(zhi)技(ji)術和(he)數據采集等許多專(zhuan)業(ye)課的(de)(de)(de)前導課程,是必要的(de)(de)(de)基(ji)礎(chu)知識,起著(zhu)承上啟下的(de)(de)(de)作用。

本百科詞條由網站(zhan)注冊用(yong)戶【 知識小玲 】編(bian)輯上傳提供,當前頁(ye)面所展(zhan)示的詞條(tiao)介紹(shao)涉及(ji)宣(xuan)傳內容屬于注(zhu)冊用戶個人編(bian)輯行為,網站不完全保(bao)證內容信息的準確性、真實性,也不代表本站立場。
詞條所在榜單
您還未登錄,依《網絡安全法》相關要求,請您登錄賬戶后再提交發布信息。點擊登錄>>如您還未注冊,可點擊注冊>>,感謝您的理解及支持!
發表評論
最新評論
暫無評論
相關知識文章
十大熱門編程語言排名 編程語言排行榜2023 編程語言哪個前景好
全世界有數種編程語言,但最常用的還是那幾種。如今隨著時代的發展,一些編程語言的受歡迎程度也發生著微妙的變化。本文中maiGoo小編就帶大家看...
MAIGOO原創 編程語言 少兒編程 編程
1.3萬+
十大免費視頻網站 在線視頻網站盤點 免費看視頻網站有哪些
中國互聯網絡信息中心發布的《中國互聯網絡發展狀況統計報告》顯示,我國網絡視頻用戶已超過8.5億,其中短視頻用戶規模超過7.73億。除了抖音、...
MAIGOO原創 在線視頻 互聯網 短視頻
1043萬+
十大免費b2b網站 b2b電子商務平臺排名 b2b免費商務平臺有哪些
B2B是電子商務最成熟的商業模式之一。Maigoo網編輯從百度發布的《B2B行業洞察報告》獲悉,機械工業、建材家裝、水暖電工等等,是需求量最...
MAIGOO原創 電子商務 B2B網站 商務服務
42萬+
十大二手書交易網站 舊書網站推薦 賣二手書去哪個網站好
伴隨90后、00后新消費主力人群的形成,各大二手交易平臺逐漸年輕化,出售閑置物品也更加多元,除了交易數量較多的汽車、數碼、服裝等商品外,圖書...
MAIGOO原創 二手交易 互聯網 網上書店
26萬+
十大游戲交易平臺排行榜 正規游戲賬號交易平臺 熱門游戲交易平臺
游戲交易平臺有官方的,也有第三方的,無論選擇哪一種,“安全交易”都是至關重要的,下面CNPP小編帶大家了解下游戲交易平臺有哪些、游戲交易平臺...
MAIGOO原創(chuang) 手游 游戲平臺 PC網游
12萬+
國內十大電影下載網站 電影下載網站哪個最好 電影下載網站排行
隨著國內版權意識的蘇醒,以及各種“嚴打”,各個電影下載網站岌岌可危,那至今存活的電影下載網站哪個最好呢?Maigoo小編就為大家帶來了國內十...
MAIGOO原創 電影網站 在線視頻 電影
47萬+
十大日本動漫網站 動漫追番網站盤點 看日本動漫什么網站好
追番人數、評分和播放量一直是評價一部動漫是否優秀的三個重要指標。在大批動漫網站平臺中,你常用哪個網站來看優質日漫?最適合追番的網站有哪些?本...
MAIGOO原創(chuang) 動漫 動畫 動漫網
122萬+
十大歐美網站 國外網站排名 知名海外網站有哪些
互聯網起源于20世紀60年代末的美國阿帕網,發展至21世紀,它已與各行各業息息相關,影響著全世界的發展和社會格局。Maigoo小編在本文中盤...
MAIGOO原創 互聯網 歐美地區 在線視頻
101萬+
十大炒股軟件 炒股軟件排行榜前十名 股票軟件哪個最好用
炒股軟件哪個最好?市面上的股票軟件眾多,而對于分析行情走勢,了解市場的動態,選擇一款好的炒股軟件很重要,那么最好的股票app有哪些?下面Ma...
MAIGOO原創 股票 手機app 軟件
46萬+
十大手游交易平臺排行榜 靠譜的手游交易平臺 正規手游交易平臺推薦
近些年手機游戲市場規模逐年增長,游戲裝備交易、賬號交易,已是屢見不鮮。那么手游交易平臺有哪些呢,手游交易平臺哪個好?下面maigoo小編就和...
MAIGOO原創 手游 游戲平臺 平臺
11萬+
十大可以賺錢的軟件 十大賺錢軟件排名 有什么能賺錢的軟件
你在手機上消磨時間,而有人已經在手機上賺到了生活費。下面就跟隨Maigoo小編來看看掙錢的軟件有哪些、適合學生賺錢的軟件有哪幾個。熱門且合法...
MAIGOO原創 工具軟件 賺錢旺財 軟件
55萬+
十大電影網站排名 免費看電影網站推薦 在線電影網站有哪些
近年,我國網絡視頻用戶量穩步增長,已超出8.5億,占網民整體的94.1%。在線電影網站行業中,愛奇藝、騰訊視頻、優酷三大電影網站市場份額最高...
MAIGOO原創(chuang) 電影網站 在線視頻 互聯網
327萬+
十大最好玩小程序游戲 微信小程序游戲排行 最火微信小游戲推薦
微信小程序游戲是時下最主流的休閑方式之一。要說最火小程序游戲,如羊了個羊、肥鵝健身房、動物餐廳、成語小秀才、旅行串串、騰訊桌球等,均名列其中...
MAIGOO原創 手游 手機小游戲 最好玩
25萬+
十大圖片網站排行榜 圖片素材網站推薦 免費高清圖片網站有哪些
圖片素材通常沒有突出的主題,但經過設計師的加工后,就成為了一件完整的作品。一個好的圖片素材能讓設計作品的完工起到事半功倍的效果。本文中mai...
MAIGOO原創 辦公軟件 互聯網 在線設計
13萬+
最受男士喜愛的十大網站 男人上網常用的網站
全世界的男人喜歡什么網站?這其實沒有標準答案,畢竟多數人的愛好,以及對事物的關注點都是不同的。不過話又說回來了,男人之間更容易相互了解,也存...
MAIGOO原創 互聯網 男性/男士 科技/發明
63萬+
十大錄屏軟件 錄屏軟件哪個好 屏幕錄制軟件哪個好用
隨著電腦錄屏需求的急劇增長,win10系統的基本普及,電腦基于xbox自帶的錄屏功能,解決了越來越多人的需求;然而除了這項自帶應用外,第三方...
MAIGOO原創 辦公軟件 錄屏軟件 工具軟件
18萬+
十大最好用的輸入法盤點 最受歡迎的輸入法排行 十大輸入法品牌
輸入法是指為將各種符號輸入計算機或其他設備(如手機)而采用的編碼方法,同時是書寫工具克服墨水限制的最終結果,是一種擁有無限墨水的書寫工具,是...
十大編程軟件排行榜 編程開發工具大全 c語言編程軟件有哪些
世界上主流的編程語言有C、Java、Python、C++、C#、Visual Basic、PHP等,針對這些編程語言,又有相對應的Visua...
MAIGOO原創(chuang) 辦公軟件 工具軟件 軟件
18萬+
十大天氣預報APP軟件 好用的天氣app排行 天氣預報軟件哪個最準確
比達咨詢(BDR)研究數據顯示,我國移動天氣軟件以2009-2013年為萌芽期,各類天氣預報app相繼衍生,到2016年得益于大數據、物聯網...
MAIGOO原創(chuang) 在線音樂 手機app 工具軟件
22萬+
十大壁紙軟件排名 電腦壁紙軟件哪個好用 動態壁紙軟件有哪些
無論是早年的Win7,還是逐漸普及開來的Win10,許多用戶仍然對原生桌面的美觀性有著一成不變的追求,進而使用起了第三方美化工具,如各類動態...
MAIGOO原創 壁紙軟件 工具軟件 軟件
32萬+