芒果视频

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

基本介紹

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

簡介

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

發展歷程

編程語言

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

機器語言

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

匯編語言

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

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

高級語言

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

產品設計

語言組成

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

傳送指令

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

邏輯運算

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

移位指令

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

位操作

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

控制轉移

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

串操作

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

輸入輸出

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

特色功能

語言特點

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

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

優點

匯編語言(yan)(yan)作為機(ji)器(qi)語言(yan)(yan)之上(shang)的第二(er)代(dai)編程語言(yan)(yan),它也(ye)有(you)很(hen)多(duo)優點:

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

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

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

缺點

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

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

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

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

對比高級語言

區別

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

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

聯系

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

相關技術

匯編器

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

編譯環境

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

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

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

品牌介紹

發展前景

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

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

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