芒果视频下载

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

基本介紹

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

簡介

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

發展歷程

編程語言

自從1946年世(shi)界上第(di)一臺電子計(ji)算機(ji)(ji)(ji)問(wen)世(shi),人(ren)類和機(ji)(ji)(ji)器的(de)(de)(de)(de)交流方式和語(yu)(yu)(yu)言(yan)(yan)(yan)就(jiu)成為了(le)(le)軟(ruan)件(jian)工程(cheng)師和計(ji)算機(ji)(ji)(ji)從業(ye)者的(de)(de)(de)(de)主要研究(jiu)方向,更有(you)效(xiao)更簡便的(de)(de)(de)(de)編程(cheng)語(yu)(yu)(yu)言(yan)(yan)(yan)成為了(le)(le)軟(ruan)件(jian)工程(cheng)師的(de)(de)(de)(de)新(xin)寵兒(er),伴隨著計(ji)算機(ji)(ji)(ji)的(de)(de)(de)(de)飛(fei)速發展(zhan),計(ji)算機(ji)(ji)(ji)的(de)(de)(de)(de)硬件(jian)升級(ji)速度也(ye)越來越快,對編程(cheng)語(yu)(yu)(yu)言(yan)(yan)(yan)的(de)(de)(de)(de)要求也(ye)日(ri)益(yi)嚴格。在過去(qu)的(de)(de)(de)(de)幾(ji)十(shi)年,編程(cheng)語(yu)(yu)(yu)言(yan)(yan)(yan)有(you)了(le)(le)長足(zu)(zu)的(de)(de)(de)(de)發展(zhan),至今已經有(you)四代語(yu)(yu)(yu)言(yan)(yan)(yan)問(wen)世(shi)。大量(liang)的(de)(de)(de)(de)編程(cheng)語(yu)(yu)(yu)言(yan)(yan)(yan)為了(le)(le)滿足(zu)(zu)不同(tong)領(ling)域的(de)(de)(de)(de)編程(cheng)要求和軟(ruan)件(jian)功能,經歷了(le)(le)被修改,被取代,被發展(zhan)等過程(cheng),最終發展(zhan)成了(le)(le)現在編程(cheng)語(yu)(yu)(yu)言(yan)(yan)(yan)的(de)(de)(de)(de)多樣(yang)化。盡管人(ren)們多次(ci)試圖尋找一個能夠適(shi)應所有(you)編程(cheng)環境的(de)(de)(de)(de)通(tong)用語(yu)(yu)(yu)言(yan)(yan)(yan),但是卻(que)沒有(you)一次(ci)成功。程(cheng)序(xu)設計(ji)語(yu)(yu)(yu)言(yan)(yan)(yan)正在與(yu)現代科(ke)技日(ri)益(yi)飛(fei)躍,人(ren)類的(de)(de)(de)(de)智慧在日(ri)益(yi)彰(zhang)顯。

機器語言

計(ji)(ji)算(suan)(suan)機(ji)(ji)(ji)(ji)(ji)的(de)(de)硬件(jian)作(zuo)為一種(zhong)電路(lu)元件(jian),它的(de)(de)輸(shu)出和(he)(he)(he)輸(shu)入只(zhi)能(neng)是(shi)(shi)有電或(huo)者(zhe)沒(mei)電,也(ye)就是(shi)(shi)所(suo)(suo)說(shuo)(shuo)的(de)(de)高電平和(he)(he)(he)低(di)電平,所(suo)(suo)以(yi)計(ji)(ji)算(suan)(suan)機(ji)(ji)(ji)(ji)(ji)傳遞的(de)(de)數據(ju)是(shi)(shi)由“0”和(he)(he)(he)“1”組(zu)成的(de)(de)二進制數,所(suo)(suo)以(yi)說(shuo)(shuo)二進制的(de)(de)語(yu)(yu)(yu)(yu)言(yan)是(shi)(shi)計(ji)(ji)算(suan)(suan)機(ji)(ji)(ji)(ji)(ji)語(yu)(yu)(yu)(yu)言(yan)的(de)(de)本質。計(ji)(ji)算(suan)(suan)機(ji)(ji)(ji)(ji)(ji)發明之初,人(ren)們為了去(qu)控(kong)制計(ji)(ji)算(suan)(suan)機(ji)(ji)(ji)(ji)(ji)完成自己的(de)(de)任務或(huo)者(zhe)項目,只(zhi)能(neng)去(qu)編寫(xie)“0”、“1”這(zhe)(zhe)樣的(de)(de)二進制數字(zi)串去(qu)控(kong)制電腦,其(qi)(qi)實就是(shi)(shi)控(kong)制計(ji)(ji)算(suan)(suan)機(ji)(ji)(ji)(ji)(ji)硬件(jian)的(de)(de)高低(di)電平或(huo)通路(lu)開路(lu),這(zhe)(zhe)種(zhong)語(yu)(yu)(yu)(yu)言(yan)就是(shi)(shi)機(ji)(ji)(ji)(ji)(ji)器(qi)語(yu)(yu)(yu)(yu)言(yan)。直觀上看,機(ji)(ji)(ji)(ji)(ji)器(qi)語(yu)(yu)(yu)(yu)言(yan)十分晦澀難懂,其(qi)(qi)中的(de)(de)含義往往要(yao)通過查表或(huo)者(zhe)手冊(ce)才能(neng)理解,使(shi)用(yong)的(de)(de)時候非常痛苦,尤(you)其(qi)(qi)當你需(xu)要(yao)修(xiu)改已經完成的(de)(de)程(cheng)(cheng)序(xu)時,這(zhe)(zhe)種(zhong)看起來無(wu)(wu)序(xu)的(de)(de)機(ji)(ji)(ji)(ji)(ji)器(qi)語(yu)(yu)(yu)(yu)言(yan)會讓你無(wu)(wu)從下手,也(ye)很(hen)難找到(dao)程(cheng)(cheng)序(xu)的(de)(de)錯誤。而且,不(bu)同計(ji)(ji)算(suan)(suan)機(ji)(ji)(ji)(ji)(ji)的(de)(de)運行(xing)環(huan)境不(bu)同,指令方式操作(zuo)方式也(ye)不(bu)盡(jin)相同,所(suo)(suo)以(yi)當你在(zai)這(zhe)(zhe)種(zhong)機(ji)(ji)(ji)(ji)(ji)器(qi)語(yu)(yu)(yu)(yu)言(yan)就有了特定(ding)性(xing),只(zhi)能(neng)在(zai)特定(ding)的(de)(de)計(ji)(ji)算(suan)(suan)機(ji)(ji)(ji)(ji)(ji)上執(zhi)行(xing),而一旦(dan)換了機(ji)(ji)(ji)(ji)(ji)器(qi)就需(xu)要(yao)重新編程(cheng)(cheng),這(zhe)(zhe)極大的(de)(de)降低(di)了程(cheng)(cheng)序(xu)的(de)(de)使(shi)用(yong)和(he)(he)(he)推廣效率(lv)。但由于(yu)機(ji)(ji)(ji)(ji)(ji)器(qi)語(yu)(yu)(yu)(yu)言(yan)具有特定(ding)性(xing),完美適配特定(ding)型號的(de)(de)計(ji)(ji)算(suan)(suan)機(ji)(ji)(ji)(ji)(ji),故而運行(xing)效率(lv)遠遠高過其(qi)(qi)他語(yu)(yu)(yu)(yu)言(yan)。機(ji)(ji)(ji)(ji)(ji)器(qi)語(yu)(yu)(yu)(yu)言(yan),也(ye)就是(shi)(shi)第一代編程(cheng)(cheng)語(yu)(yu)(yu)(yu)言(yan)。

匯編語言

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

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

高級語言

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

產品設計

語言組成

由于(yu)匯編指令(ling)(ling)系(xi)統龐大,因而需(xu)構(gou)建(jian)指令(ling)(ling)系(xi)統體系(xi),其(qi)指令(ling)(ling)數量龐大,格式復雜,可記憶性差等。指令(ling)(ling)中(zhong)最(zui)難的(de)是指令(ling)(ling)所支持的(de)尋址(zhi)方(fang)式,其(qi)實質(zhi)就是指令(ling)(ling)中(zhong)操作數如何獲取。對于(yu)處(chu)理器而言(yan)(yan),就是如何找到他所需(xu)的(de)數據。但對于(yu)計算(suan)機(ji)底層的(de)匯編語言(yan)(yan)而言(yan)(yan),這種尋址(zhi)方(fang)式將涉(she)及大量的(de)計算(suan)存儲格式,與復雜的(de)存儲管理方(fang)式緊密相關,因而難以理解。最(zui)后,匯編指令(ling)(ling)還關系(xi)到如何影響標志位(wei)(wei),但處(chu)理器標志位(wei)(wei)非(fei)常復雜,因而對其(qi)機(ji)制(zhi)掌握就比(bi)較困難。

傳送指令

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

邏輯運算

這部(bu)分指(zhi)令(ling)(ling)(ling)用(yong)于執(zhi)行算(suan)術和邏輯(ji)運算(suan),包括加法(fa)指(zhi)令(ling)(ling)(ling)ADD/ADC、減法(fa)指(zhi)令(ling)(ling)(ling)SUB/SBB、加一(yi)指(zhi)令(ling)(ling)(ling)INC、減一(yi)指(zhi)令(ling)(ling)(ling)DEC、比(bi)較操作(zuo)指(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、十進制調整指(zhi)令(ling)(ling)(ling)DAA/DAS/AAA/AAS、邏輯(ji)運算(suan)指(zhi)令(ling)(ling)(ling)NOT/AND/OR/XOR/TEST等(deng)。

移位指令

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

位操作

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

控制轉移

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

串操作

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

輸入輸出

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

特色功能

語言特點

匯(hui)編(bian)語(yu)(yu)(yu)言(yan)是計算(suan)機提供給用(yong)(yong)戶的最快最有效(xiao)的語(yu)(yu)(yu)言(yan),也是能夠利用(yong)(yong)計算(suan)機的所有硬件特性并能夠直(zhi)接(jie)控制(zhi)硬件的唯一語(yu)(yu)(yu)言(yan)。但是由于編(bian)寫和調試匯(hui)編(bian)語(yu)(yu)(yu)言(yan)程(cheng)序要比高級(ji)語(yu)(yu)(yu)言(yan)復雜,因此目前其(qi)應用(yong)(yong)不如高級(ji)語(yu)(yu)(yu)言(yan)廣泛。

匯(hui)編(bian)語(yu)(yu)言(yan)(yan)(yan)(yan)(yan)比機器(qi)語(yu)(yu)言(yan)(yan)(yan)(yan)(yan)的(de)可讀性(xing)(xing)要好,但跟(gen)高(gao)級語(yu)(yu)言(yan)(yan)(yan)(yan)(yan)比較(jiao)而言(yan)(yan)(yan)(yan)(yan),可讀性(xing)(xing)還是(shi)較(jiao)差。不(bu)過采用(yong)它編(bian)寫的(de)程序具有存儲空間(jian)占(zhan)用(yong)少、執行速度快的(de)特點(dian),這些是(shi)高(gao)級語(yu)(yu)言(yan)(yan)(yan)(yan)(yan)所無法取代的(de)。在(zai)實際應用(yong)中,是(shi)否使用(yong)匯(hui)編(bian)語(yu)(yu)言(yan)(yan)(yan)(yan)(yan),取決于具體應用(yong)要求(qiu)、開發時間(jian)和質量等方面(mian)作權衡。

優點

匯編語(yu)言作為機(ji)器語(yu)言之上的第(di)二代編程(cheng)語(yu)言,它也(ye)有很(hen)多優點:

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

編寫的代碼(ma)因為(wei)少了很多編譯的環節,可以能(neng)夠準(zhun)確的被執行

作為一種低級語言(yan),可(ke)擴展性很高

缺點

因為代碼非常單調,特(te)殊指(zhi)令(ling)字符很少,所以造成了代碼的(de)(de)冗(rong)長以及編寫的(de)(de)困難(nan)

因為(wei)匯編(bian)仍然需要自己去調(diao)用存儲(chu)器存儲(chu)數據(ju),很容(rong)易出現BUG,而且調(diao)試起來也不容(rong)易

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

因(yin)為機器的特殊性造成(cheng)了代碼兼(jian)容性差的缺陷。

對比高級語言

區別

匯編語(yu)言的(de)特點是(shi)容易被(bei)計算機識別和(he)執行(xing),使用它進行(xing)編程可以減少占用空間、提高運行(xing)速度,并能(neng)直接對硬件(jian)實(shi)施控(kong)制。在(zai)需要實(shi)時控(kong)制的(de)時候,有著不可替代(dai)的(de)重(zhong)要地位,但匯編語(yu)言在(zai)編程和(he)理(li)解時要復雜、困(kun)難一(yi)些,尤其是(shi)在(zai)進行(xing)數據(ju)處理(li)或是(shi)邏輯(ji)運算時更加(jia)凸顯出其劣勢(shi)。

高(gao)級(ji)(ji)語(yu)(yu)(yu)言(yan)是面向使用(yong)(yong)者的語(yu)(yu)(yu)言(yan),能更(geng)準(zhun)確(que)地被程(cheng)(cheng)序員所理解,它的表達能力強,功能多,編(bian)程(cheng)(cheng)效率高(gao),上手(shou)速度(du)快,自(zi)動(dong)化程(cheng)(cheng)度(du)高(gao),因而更(geng)受歡(huan)迎。在大部分軟件開發(fa)中,使用(yong)(yong)者都采用(yong)(yong)高(gao)級(ji)(ji)語(yu)(yu)(yu)言(yan)編(bian)程(cheng)(cheng),以(yi)提(ti)高(gao)編(bian)程(cheng)(cheng)效率。但(dan)在要求(qiu)存儲空間小,執行(xing)速度(du)快,需直接對硬(ying)件進(jin)行(xing)控(kong)制的場合,則應用(yong)(yong)匯編(bian)語(yu)(yu)(yu)言(yan)編(bian)程(cheng)(cheng),以(yi)達到(dao)優化程(cheng)(cheng)序速度(du)的目(mu)的。

聯系

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

相關技術

匯編器

典型(xing)的(de)(de)現代匯編(bian)(bian)器(qi)(Assembler)建造目標代碼,由(you)解譯(yi)組(zu)語指令集的(de)(de)易(yi)記碼(Mnemonics)到操(cao)作碼(OpCode),并解析符號名稱(Symbolic Names)成為(wei)存儲器(qi)地(di)址以及其它的(de)(de)實體。使用符號參考是(shi)匯編(bian)(bian)器(qi)的(de)(de)一個重要(yao)特征,它可以節省修改程序后人工轉址的(de)(de)乏味耗時計算。基(ji)本就(jiu)是(shi)把機器(qi)碼變成一些字母而(er)已,編(bian)(bian)譯(yi)的(de)(de)時候再把輸入的(de)(de)指令字母替(ti)換成為(wei)晦澀難(nan)懂機器(qi)碼。

編譯環境

用匯(hui)編語(yu)言等(deng)非機器語(yu)言書寫好(hao)的符號程序(xu)稱(cheng)為源(yuan)程序(xu),匯(hui)編語(yu)言編譯器的作用是將源(yuan)程序(xu)翻譯成(cheng)目標程序(xu)。目標程序(xu)是機器語(yu)言程序(xu),當它被(bei)安置(zhi)在內(nei)存的預定(ding)位置(zhi)上后(hou),就(jiu)能(neng)被(bei)計算機的CPU處(chu)理和執行。

匯編的調試(shi)環(huan)境總(zong)的來(lai)說(shuo)比較(jiao)少(shao),也很少(shao)有非常好的編譯器。編譯器的選擇依賴于目標處理器的類(lei)型和(he)具(ju)體的系統平臺。一般來(lai)說(shuo),功能良好的編譯器用起來(lai)應(ying)當(dang)非常方便,比如,應(ying)當(dang)可以自動整(zheng)理格(ge)式、語法(fa)高亮顯(xian)示(shi),集編譯、鏈接(jie)和(he)調試(shi)為一體,方便實(shi)用。

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

品牌介紹

發展前景

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

雖然隨著半導(dao)體技(ji)術(shu)、編(bian)(bian)(bian)程(cheng)(cheng)(cheng)(cheng)技(ji)術(shu)的(de)(de)(de)(de)不斷發(fa)展,在實(shi)際工(gong)程(cheng)(cheng)(cheng)(cheng)應用(yong)(yong)(yong)中確實(shi)很(hen)少(shao)看到匯編(bian)(bian)(bian)語(yu)(yu)(yu)言(yan)(yan)的(de)(de)(de)(de)身(shen)影,但這并(bing)不能(neng)說明匯編(bian)(bian)(bian)語(yu)(yu)(yu)言(yan)(yan)沒用(yong)(yong)(yong),已(yi)被其他高(gao)級語(yu)(yu)(yu)言(yan)(yan)所取代。嵌(qian)入式系(xi)統的(de)(de)(de)(de)底層驅(qu)動、計算(suan)機(ji)的(de)(de)(de)(de)BIOS還是要用(yong)(yong)(yong)匯編(bian)(bian)(bian)語(yu)(yu)(yu)言(yan)(yan)實(shi)現。匯編(bian)(bian)(bian)語(yu)(yu)(yu)言(yan)(yan)是培養學生(sheng)理(li)解硬件資源的(de)(de)(de)(de)語(yu)(yu)(yu)言(yan)(yan),是學習(xi)和(he)理(li)解其他高(gao)級程(cheng)(cheng)(cheng)(cheng)序設計語(yu)(yu)(yu)言(yan)(yan)的(de)(de)(de)(de)基(ji)礎(chu),是計算(suan)機(ji)組成(cheng)原理(li)、接口與通信技(ji)術(shu)、計算(suan)機(ji)控(kong)制技(ji)術(shu)和(he)數據采集等許多專業課(ke)的(de)(de)(de)(de)前導(dao)課(ke)程(cheng)(cheng)(cheng)(cheng),是必要的(de)(de)(de)(de)基(ji)礎(chu)知識(shi),起著承上啟下的(de)(de)(de)(de)作(zuo)用(yong)(yong)(yong)。

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