芒果视频下载

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

基本介紹

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

簡介

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

發展歷程

編程語言

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

機器語言

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

匯編語言

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

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

高級語言

在編(bian)(bian)程(cheng)(cheng)(cheng)(cheng)語(yu)(yu)言(yan)(yan)(yan)經歷了(le)機(ji)器語(yu)(yu)言(yan)(yan)(yan),匯編(bian)(bian)語(yu)(yu)言(yan)(yan)(yan)等更(geng)(geng)新(xin)之后,人(ren)們發現了(le)限(xian)(xian)制程(cheng)(cheng)(cheng)(cheng)序(xu)推(tui)廣的(de)(de)(de)(de)關鍵因(yin)素——程(cheng)(cheng)(cheng)(cheng)序(xu)的(de)(de)(de)(de)可移(yi)植性。需要設計(ji)(ji)(ji)一個能(neng)夠不依賴于(yu)計(ji)(ji)(ji)算機(ji)硬件,能(neng)夠在不同(tong)機(ji)器上(shang)運(yun)行的(de)(de)(de)(de)程(cheng)(cheng)(cheng)(cheng)序(xu)。這樣可以(yi)免去很多(duo)編(bian)(bian)程(cheng)(cheng)(cheng)(cheng)的(de)(de)(de)(de)重復過(guo)程(cheng)(cheng)(cheng)(cheng),提高(gao)效(xiao)率,同(tong)時(shi)這種語(yu)(yu)言(yan)(yan)(yan)又要接近于(yu)數學語(yu)(yu)言(yan)(yan)(yan)或人(ren)的(de)(de)(de)(de)自(zi)然語(yu)(yu)言(yan)(yan)(yan)。在計(ji)(ji)(ji)算機(ji)還很稀(xi)缺(que)的(de)(de)(de)(de)50年代,誕生了(le)第(di)一個高(gao)級編(bian)(bian)程(cheng)(cheng)(cheng)(cheng)語(yu)(yu)言(yan)(yan)(yan)。當時(shi)計(ji)(ji)(ji)算機(ji)的(de)(de)(de)(de)造(zao)價(jia)不菲(fei),但是每天的(de)(de)(de)(de)計(ji)(ji)(ji)算量(liang)又有限(xian)(xian),如何(he)有效(xiao)的(de)(de)(de)(de)利用計(ji)(ji)(ji)算機(ji)有限(xian)(xian)的(de)(de)(de)(de)計(ji)(ji)(ji)算能(neng)力成為了(le)當時(shi)人(ren)們面對的(de)(de)(de)(de)問題(ti)。同(tong)時(shi),因(yin)為資(zi)源的(de)(de)(de)(de)稀(xi)缺(que),計(ji)(ji)(ji)算機(ji)的(de)(de)(de)(de)運(yun)行效(xiao)率也(ye)成為了(le)那個年代工程(cheng)(cheng)(cheng)(cheng)師(shi)追(zhui)(zhui)尋的(de)(de)(de)(de)目標。為了(le)更(geng)(geng)高(gao)效(xiao)的(de)(de)(de)(de)使用計(ji)(ji)(ji)算機(ji),人(ren)們設計(ji)(ji)(ji)出了(le)高(gao)級編(bian)(bian)程(cheng)(cheng)(cheng)(cheng)語(yu)(yu)言(yan)(yan)(yan),來滿(man)足(zu)人(ren)們對于(yu)高(gao)效(xiao)簡(jian)潔的(de)(de)(de)(de)編(bian)(bian)程(cheng)(cheng)(cheng)(cheng)語(yu)(yu)言(yan)(yan)(yan)的(de)(de)(de)(de)追(zhui)(zhui)求。

產品設計

語言組成

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

傳送指令

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

邏輯運算

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

移位指令

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

位操作

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

控制轉移

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

串操作

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

輸入輸出

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

特色功能

語言特點

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

匯(hui)編語言(yan)(yan)比機(ji)器語言(yan)(yan)的(de)可讀性(xing)(xing)要(yao)好,但跟高(gao)(gao)級語言(yan)(yan)比較而言(yan)(yan),可讀性(xing)(xing)還是(shi)(shi)較差(cha)。不過(guo)采用(yong)(yong)它編寫的(de)程(cheng)序(xu)具有存儲空間占用(yong)(yong)少、執(zhi)行速度(du)快的(de)特(te)點,這些是(shi)(shi)高(gao)(gao)級語言(yan)(yan)所(suo)無(wu)法取代的(de)。在實(shi)際應(ying)用(yong)(yong)中(zhong),是(shi)(shi)否使用(yong)(yong)匯(hui)編語言(yan)(yan),取決(jue)于具體應(ying)用(yong)(yong)要(yao)求、開(kai)發時間和質量(liang)等方(fang)面(mian)作(zuo)權衡。

優點

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

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

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

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

缺點

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

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

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

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

對比高級語言

區別

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

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

聯系

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

相關技術

匯編器

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

編譯環境

用匯(hui)編語言(yan)等非機器語言(yan)書寫(xie)好的符(fu)號程(cheng)序稱為源程(cheng)序,匯(hui)編語言(yan)編譯(yi)器的作(zuo)用是(shi)將源程(cheng)序翻譯(yi)成(cheng)目標程(cheng)序。目標程(cheng)序是(shi)機器語言(yan)程(cheng)序,當它被(bei)安置在內存的預(yu)定位置上后(hou),就能被(bei)計算機的CPU處理和(he)執行(xing)。

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

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

品牌介紹

發展前景

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

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

本(ben)百(bai)科(ke)詞條由網站注冊用戶【 知識(shi)小(xiao)玲(ling) 】編(bian)(bian)輯(ji)上傳(chuan)提供,當前頁(ye)面所展示的(de)詞條介紹(shao)涉及(ji)宣傳(chuan)內容(rong)屬(shu)于注(zhu)冊用(yong)戶個人(ren)編(bian)(bian)輯(ji)行為(wei),網站不完(wan)全保證內容(rong)信(xin)息的(de)準(zhun)確性(xing)、真實性(xing),也不代表本站立場。
詞條所在榜單
您還未登錄,依《網絡安全法》相關要求,請您登錄賬戶后再提交發布信息。點擊登錄>>如您還未注冊,可點擊注冊>>,感謝您的理解及支持!
發表評論
最新評論
暫無評論
相關知識文章
十大熱門編程語言排名 編程語言排行榜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原創 電影網站 在線視頻 電影
47萬+
十大日本動漫網站 動漫追番網站盤點 看日本動漫什么網站好
追番人數、評分和播放量一直是評價一部動漫是否優秀的三個重要指標。在大批動漫網站平臺中,你常用哪個網站來看優質日漫?最適合追番的網站有哪些?本...
MAIGOO原創 動漫 動畫 動漫網
122萬+
十大歐美網站 國外網站排名 知名海外網站有哪些
互聯網起源于20世紀60年代末的美國阿帕網,發展至21世紀,它已與各行各業息息相關,影響著全世界的發展和社會格局。Maigoo小編在本文中盤...
MAIGOO原創 互聯網 歐美地區 在線視頻
101萬+
十大炒股軟件 炒股軟件排行榜前十名 股票軟件哪個最好用
炒股軟件哪個最好?市面上的股票軟件眾多,而對于分析行情走勢,了解市場的動態,選擇一款好的炒股軟件很重要,那么最好的股票app有哪些?下面Ma...
MAIGOO原創(chuang) 股票 手機app 軟件
46萬+
十大手游交易平臺排行榜 靠譜的手游交易平臺 正規手游交易平臺推薦
近些年手機游戲市場規模逐年增長,游戲裝備交易、賬號交易,已是屢見不鮮。那么手游交易平臺有哪些呢,手游交易平臺哪個好?下面maigoo小編就和...
MAIGOO原創(chuang) 手游 游戲平臺 平臺
11萬+
十大可以賺錢的軟件 十大賺錢軟件排名 有什么能賺錢的軟件
你在手機上消磨時間,而有人已經在手機上賺到了生活費。下面就跟隨Maigoo小編來看看掙錢的軟件有哪些、適合學生賺錢的軟件有哪幾個。熱門且合法...
MAIGOO原創(chuang) 工具軟件 賺錢旺財 軟件
55萬+
十大電影網站排名 免費看電影網站推薦 在線電影網站有哪些
近年,我國網絡視頻用戶量穩步增長,已超出8.5億,占網民整體的94.1%。在線電影網站行業中,愛奇藝、騰訊視頻、優酷三大電影網站市場份額最高...
MAIGOO原創 電影網站 在線視頻 互聯網
327萬+
十大最好玩小程序游戲 微信小程序游戲排行 最火微信小游戲推薦
微信小程序游戲是時下最主流的休閑方式之一。要說最火小程序游戲,如羊了個羊、肥鵝健身房、動物餐廳、成語小秀才、旅行串串、騰訊桌球等,均名列其中...
MAIGOO原創(chuang) 手游 手機小游戲 最好玩
25萬+
十大圖片網站排行榜 圖片素材網站推薦 免費高清圖片網站有哪些
圖片素材通常沒有突出的主題,但經過設計師的加工后,就成為了一件完整的作品。一個好的圖片素材能讓設計作品的完工起到事半功倍的效果。本文中mai...
MAIGOO原創 辦公軟件 互聯網 在線設計
13萬+
最受男士喜愛的十大網站 男人上網常用的網站
全世界的男人喜歡什么網站?這其實沒有標準答案,畢竟多數人的愛好,以及對事物的關注點都是不同的。不過話又說回來了,男人之間更容易相互了解,也存...
MAIGOO原創 互聯網 男性/男士 科技/發明
63萬+
十大錄屏軟件 錄屏軟件哪個好 屏幕錄制軟件哪個好用
隨著電腦錄屏需求的急劇增長,win10系統的基本普及,電腦基于xbox自帶的錄屏功能,解決了越來越多人的需求;然而除了這項自帶應用外,第三方...
MAIGOO原(yuan)創 辦公軟件 錄屏軟件 工具軟件
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萬+