芒果视频下载

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

基本介紹

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

簡介

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

發展歷程

編程語言

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

機器語言

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

匯編語言

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

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

高級語言

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

產品設計

語言組成

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

傳送指令

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

邏輯運算

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

移位指令

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

位操作

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

控制轉移

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

串操作

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

輸入輸出

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

特色功能

語言特點

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

匯(hui)編(bian)語(yu)言(yan)(yan)(yan)比(bi)機器語(yu)言(yan)(yan)(yan)的可讀性要好(hao),但(dan)跟高級語(yu)言(yan)(yan)(yan)比(bi)較而言(yan)(yan)(yan),可讀性還是(shi)較差。不過(guo)采用(yong)它編(bian)寫的程(cheng)序具(ju)有存儲(chu)空間占用(yong)少、執行速(su)度快的特(te)點,這些是(shi)高級語(yu)言(yan)(yan)(yan)所(suo)無法取(qu)代的。在實際應用(yong)中,是(shi)否使(shi)用(yong)匯(hui)編(bian)語(yu)言(yan)(yan)(yan),取(qu)決于具(ju)體(ti)應用(yong)要求(qiu)、開發時間和質(zhi)量等方面作權衡。

優點

匯編(bian)語言(yan)作(zuo)為(wei)機器語言(yan)之上的第二(er)代(dai)編(bian)程(cheng)語言(yan),它也有(you)很多優點:

可以輕松的讀(du)取存(cun)儲器狀(zhuang)態以及(ji)硬件I/O接口情況

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

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

缺點

因為代(dai)碼(ma)非(fei)常單調(diao),特殊指令(ling)字符(fu)很少(shao),所以(yi)造成了代(dai)碼(ma)的(de)冗長以(yi)及編寫(xie)的(de)困難(nan)

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

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

因為機(ji)器的(de)特殊性造(zao)成了代(dai)碼兼(jian)容(rong)性差的(de)缺陷。

對比高級語言

區別

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

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

聯系

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

相關技術

匯編器

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

編譯環境

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

匯編(bian)的調試環境總的來說比較少,也很少有(you)非常(chang)好的編(bian)譯(yi)(yi)(yi)器。編(bian)譯(yi)(yi)(yi)器的選(xuan)擇依賴于目標處(chu)理器的類(lei)型和具體的系統平(ping)臺。一(yi)般來說,功能(neng)良好的編(bian)譯(yi)(yi)(yi)器用(yong)起(qi)來應(ying)當非常(chang)方便,比如,應(ying)當可(ke)以自動整理格式(shi)、語法高亮顯示,集編(bian)譯(yi)(yi)(yi)、鏈接和調試為一(yi)體,方便實(shi)用(yong)。

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

品牌介紹

發展前景

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

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

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