芒果视频下载

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

基本介紹

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

簡介

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

發展歷程

編程語言

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

機器語言

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

匯編語言

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

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

高級語言

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

產品設計

語言組成

由于匯(hui)編指令(ling)系(xi)統(tong)龐(pang)大,因而(er)需構建(jian)指令(ling)系(xi)統(tong)體系(xi),其(qi)指令(ling)數量龐(pang)大,格式(shi)復雜,可記憶性差(cha)等。指令(ling)中最難(nan)的(de)(de)是(shi)指令(ling)所支持的(de)(de)尋(xun)址方式(shi),其(qi)實質就(jiu)是(shi)指令(ling)中操作數如(ru)何(he)獲(huo)取。對(dui)于處理(li)(li)器而(er)言(yan),就(jiu)是(shi)如(ru)何(he)找到他所需的(de)(de)數據。但(dan)對(dui)于計算機底層的(de)(de)匯(hui)編語言(yan)而(er)言(yan),這種尋(xun)址方式(shi)將涉及大量的(de)(de)計算存儲(chu)格式(shi),與復雜的(de)(de)存儲(chu)管理(li)(li)方式(shi)緊密相(xiang)關,因而(er)難(nan)以(yi)理(li)(li)解。最后,匯(hui)編指令(ling)還關系(xi)到如(ru)何(he)影響標志位,但(dan)處理(li)(li)器標志位非常復雜,因而(er)對(dui)其(qi)機制掌(zhang)握(wo)就(jiu)比(bi)較困難(nan)。

傳送指令

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

邏輯運算

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

移位指令

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

位操作

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

控制轉移

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

串操作

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

輸入輸出

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

特色功能

語言特點

匯編語(yu)(yu)言(yan)是計算機提供給用戶的(de)最快最有(you)效的(de)語(yu)(yu)言(yan),也是能夠利用計算機的(de)所有(you)硬件(jian)特性并能夠直接(jie)控(kong)制硬件(jian)的(de)唯一(yi)語(yu)(yu)言(yan)。但(dan)是由于編寫和調(diao)試匯編語(yu)(yu)言(yan)程序要(yao)比(bi)高級語(yu)(yu)言(yan)復(fu)雜,因(yin)此目前其應用不(bu)如(ru)高級語(yu)(yu)言(yan)廣泛(fan)。

匯編語言比機器(qi)語言的(de)可(ke)讀(du)性(xing)要好,但跟(gen)高(gao)級語言比較(jiao)而(er)言,可(ke)讀(du)性(xing)還是(shi)(shi)較(jiao)差。不過(guo)采用(yong)(yong)(yong)它編寫的(de)程(cheng)序具有存(cun)儲空間占用(yong)(yong)(yong)少、執行速度快的(de)特點,這些(xie)是(shi)(shi)高(gao)級語言所(suo)無法(fa)取(qu)代的(de)。在實際應(ying)用(yong)(yong)(yong)中,是(shi)(shi)否使用(yong)(yong)(yong)匯編語言,取(qu)決(jue)于具體應(ying)用(yong)(yong)(yong)要求、開發時(shi)間和質量等方(fang)面作權衡(heng)。

優點

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

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

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

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

缺點

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

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

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

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

對比高級語言

區別

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

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

聯系

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

相關技術

匯編器

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

編譯環境

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

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

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

品牌介紹

發展前景

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

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

本百科詞條由網站(zhan)注冊用戶【 知識(shi)小玲 】編(bian)輯(ji)上(shang)傳(chuan)提供,當前頁面所展示(shi)的(de)詞條介(jie)紹涉及宣傳(chuan)內容屬于(yu)注冊用(yong)戶個人編(bian)輯(ji)行為,網站不完全保(bao)證內容信息(xi)的(de)準確(que)性(xing)、真實性(xing),也不代表本(ben)站立場。
詞條所在榜單
您還未登錄,依《網絡安全法》相關要求,請您登錄賬戶后再提交發布信息。點擊登錄>>如您還未注冊,可點擊注冊>>,感謝您的理解及支持!
發表評論
最新評論
暫無評論
相關知識文章
十大熱門編程語言排名 編程語言排行榜2023 編程語言哪個前景好
全世界有數種編程語言,但最常用的還是那幾種。如今隨著時代的發展,一些編程語言的受歡迎程度也發生著微妙的變化。本文中maiGoo小編就帶大家看...
MAIGOO原創(chuang) 編程語言 少兒編程 編程
1.3萬+
十大免費視頻網站 在線視頻網站盤點 免費看視頻網站有哪些
中國互聯網絡信息中心發布的《中國互聯網絡發展狀況統計報告》顯示,我國網絡視頻用戶已超過8.5億,其中短視頻用戶規模超過7.73億。除了抖音、...
MAIGOO原(yuan)創(chuang) 在線視頻 互聯網 短視頻
1043萬+
十大免費b2b網站 b2b電子商務平臺排名 b2b免費商務平臺有哪些
B2B是電子商務最成熟的商業模式之一。Maigoo網編輯從百度發布的《B2B行業洞察報告》獲悉,機械工業、建材家裝、水暖電工等等,是需求量最...
MAIGOO原創 電子商務 B2B網站 商務服務
42萬+
十大二手書交易網站 舊書網站推薦 賣二手書去哪個網站好
伴隨90后、00后新消費主力人群的形成,各大二手交易平臺逐漸年輕化,出售閑置物品也更加多元,除了交易數量較多的汽車、數碼、服裝等商品外,圖書...
MAIGOO原創(chuang) 二手交易 互聯網 網上書店
26萬+
十大游戲交易平臺排行榜 正規游戲賬號交易平臺 熱門游戲交易平臺
游戲交易平臺有官方的,也有第三方的,無論選擇哪一種,“安全交易”都是至關重要的,下面CNPP小編帶大家了解下游戲交易平臺有哪些、游戲交易平臺...
MAIGOO原創 手游 游戲平臺 PC網游
12萬+
國內十大電影下載網站 電影下載網站哪個最好 電影下載網站排行
隨著國內版權意識的蘇醒,以及各種“嚴打”,各個電影下載網站岌岌可危,那至今存活的電影下載網站哪個最好呢?Maigoo小編就為大家帶來了國內十...
MAIGOO原創 電影網站 在線視頻 電影
47萬+
十大日本動漫網站 動漫追番網站盤點 看日本動漫什么網站好
追番人數、評分和播放量一直是評價一部動漫是否優秀的三個重要指標。在大批動漫網站平臺中,你常用哪個網站來看優質日漫?最適合追番的網站有哪些?本...
MAIGOO原創 動漫 動畫 動漫網
122萬+
十大歐美網站 國外網站排名 知名海外網站有哪些
互聯網起源于20世紀60年代末的美國阿帕網,發展至21世紀,它已與各行各業息息相關,影響著全世界的發展和社會格局。Maigoo小編在本文中盤...
MAIGOO原創(chuang) 互聯網 歐美地區 在線視頻
101萬+
十大炒股軟件 炒股軟件排行榜前十名 股票軟件哪個最好用
炒股軟件哪個最好?市面上的股票軟件眾多,而對于分析行情走勢,了解市場的動態,選擇一款好的炒股軟件很重要,那么最好的股票app有哪些?下面Ma...
MAIGOO原(yuan)創(chuang) 股票 手機app 軟件
46萬+
十大手游交易平臺排行榜 靠譜的手游交易平臺 正規手游交易平臺推薦
近些年手機游戲市場規模逐年增長,游戲裝備交易、賬號交易,已是屢見不鮮。那么手游交易平臺有哪些呢,手游交易平臺哪個好?下面maigoo小編就和...
MAIGOO原(yuan)創 手游 游戲平臺 平臺
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原創 辦公軟件 工具軟件 軟件
18萬+
十大天氣預報APP軟件 好用的天氣app排行 天氣預報軟件哪個最準確
比達咨詢(BDR)研究數據顯示,我國移動天氣軟件以2009-2013年為萌芽期,各類天氣預報app相繼衍生,到2016年得益于大數據、物聯網...
MAIGOO原創 在線音樂 手機app 工具軟件
22萬+
十大壁紙軟件排名 電腦壁紙軟件哪個好用 動態壁紙軟件有哪些
無論是早年的Win7,還是逐漸普及開來的Win10,許多用戶仍然對原生桌面的美觀性有著一成不變的追求,進而使用起了第三方美化工具,如各類動態...
MAIGOO原創 壁紙軟件 工具軟件 軟件
32萬+