芒果视频下载

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

基本介紹

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

簡介

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

發展歷程

編程語言

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

機器語言

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

匯編語言

不難(nan)看出機(ji)器(qi)(qi)語(yu)(yu)言作(zuo)為一種編(bian)(bian)程語(yu)(yu)言,靈活性較(jiao)差可閱讀性也很差,為了減輕(qing)機(ji)器(qi)(qi)語(yu)(yu)言帶給軟(ruan)件工程師的(de)(de)不適應(ying),人們對機(ji)器(qi)(qi)語(yu)(yu)言進(jin)行了升級和改(gai)進(jin):用一些(xie)容易理(li)解和記憶的(de)(de)字母,單詞來(lai)代(dai)替(ti)一個特定的(de)(de)指令。通過這(zhe)(zhe)種方法,人們很容易去(qu)閱讀已經(jing)完(wan)成的(de)(de)程序或(huo)者理(li)解程序正在執行的(de)(de)功能,對現有程序的(de)(de)bug修復以及(ji)運營維護都變得更(geng)加(jia)簡單方便,這(zhe)(zhe)種語(yu)(yu)言就是我們所說的(de)(de)匯編(bian)(bian)語(yu)(yu)言,即第二代(dai)計算機(ji)語(yu)(yu)言。

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

高級語言

在編程(cheng)語(yu)(yu)言(yan)(yan)(yan)經(jing)歷了(le)機器語(yu)(yu)言(yan)(yan)(yan),匯編語(yu)(yu)言(yan)(yan)(yan)等更新之后,人們(men)(men)發(fa)現(xian)了(le)限(xian)制程(cheng)序推廣(guang)的(de)(de)(de)(de)(de)關(guan)鍵因(yin)素(su)——程(cheng)序的(de)(de)(de)(de)(de)可移植性(xing)。需要設(she)計(ji)(ji)(ji)(ji)一個能(neng)夠不依賴于計(ji)(ji)(ji)(ji)算(suan)(suan)(suan)(suan)機硬件,能(neng)夠在不同(tong)機器上(shang)運(yun)行(xing)的(de)(de)(de)(de)(de)程(cheng)序。這樣可以(yi)免去很(hen)(hen)多編程(cheng)的(de)(de)(de)(de)(de)重復(fu)過(guo)程(cheng),提高(gao)效(xiao)率(lv),同(tong)時(shi)(shi)這種語(yu)(yu)言(yan)(yan)(yan)又要接近于數學(xue)語(yu)(yu)言(yan)(yan)(yan)或人的(de)(de)(de)(de)(de)自然語(yu)(yu)言(yan)(yan)(yan)。在計(ji)(ji)(ji)(ji)算(suan)(suan)(suan)(suan)機還很(hen)(hen)稀(xi)缺的(de)(de)(de)(de)(de)50年代,誕生了(le)第一個高(gao)級編程(cheng)語(yu)(yu)言(yan)(yan)(yan)。當(dang)時(shi)(shi)計(ji)(ji)(ji)(ji)算(suan)(suan)(suan)(suan)機的(de)(de)(de)(de)(de)造價不菲,但是每天的(de)(de)(de)(de)(de)計(ji)(ji)(ji)(ji)算(suan)(suan)(suan)(suan)量(liang)又有限(xian),如何有效(xiao)的(de)(de)(de)(de)(de)利用(yong)計(ji)(ji)(ji)(ji)算(suan)(suan)(suan)(suan)機有限(xian)的(de)(de)(de)(de)(de)計(ji)(ji)(ji)(ji)算(suan)(suan)(suan)(suan)能(neng)力成為(wei)了(le)當(dang)時(shi)(shi)人們(men)(men)面(mian)對(dui)的(de)(de)(de)(de)(de)問題。同(tong)時(shi)(shi),因(yin)為(wei)資源(yuan)的(de)(de)(de)(de)(de)稀(xi)缺,計(ji)(ji)(ji)(ji)算(suan)(suan)(suan)(suan)機的(de)(de)(de)(de)(de)運(yun)行(xing)效(xiao)率(lv)也成為(wei)了(le)那個年代工(gong)程(cheng)師追尋(xun)的(de)(de)(de)(de)(de)目標。為(wei)了(le)更高(gao)效(xiao)的(de)(de)(de)(de)(de)使用(yong)計(ji)(ji)(ji)(ji)算(suan)(suan)(suan)(suan)機,人們(men)(men)設(she)計(ji)(ji)(ji)(ji)出了(le)高(gao)級編程(cheng)語(yu)(yu)言(yan)(yan)(yan),來滿(man)足人們(men)(men)對(dui)于高(gao)效(xiao)簡潔的(de)(de)(de)(de)(de)編程(cheng)語(yu)(yu)言(yan)(yan)(yan)的(de)(de)(de)(de)(de)追求(qiu)。

產品設計

語言組成

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

傳送指令

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

邏輯運算

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

移位指令

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

位操作

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

控制轉移

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

串操作

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

輸入輸出

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

特色功能

語言特點

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

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

優點

匯編語(yu)(yu)言(yan)作為機器(qi)語(yu)(yu)言(yan)之(zhi)上的第(di)二(er)代編程語(yu)(yu)言(yan),它也有很多優點(dian):

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

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

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

缺點

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

因為匯編仍然需(xu)要自己(ji)去(qu)調用存儲器存儲數據,很容(rong)易(yi)出現(xian)BUG,而(er)且(qie)調試起來也不容(rong)易(yi)

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

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

對比高級語言

區別

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

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

聯系

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

相關技術

匯編器

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

編譯環境

用匯編(bian)(bian)語(yu)(yu)言(yan)等非機器(qi)語(yu)(yu)言(yan)書(shu)寫(xie)好的符號(hao)程(cheng)(cheng)序(xu)稱為源(yuan)程(cheng)(cheng)序(xu),匯編(bian)(bian)語(yu)(yu)言(yan)編(bian)(bian)譯(yi)(yi)器(qi)的作用是將(jiang)源(yuan)程(cheng)(cheng)序(xu)翻(fan)譯(yi)(yi)成(cheng)目(mu)標程(cheng)(cheng)序(xu)。目(mu)標程(cheng)(cheng)序(xu)是機器(qi)語(yu)(yu)言(yan)程(cheng)(cheng)序(xu),當(dang)它被安置在內存的預定位置上后(hou),就能被計算機的CPU處(chu)理和(he)執行。

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

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

品牌介紹

發展前景

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

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

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