芒果视频下载

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

基本介紹

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

簡介

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

發展歷程

編程語言

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

機器語言

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

匯編語言

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

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

高級語言

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

產品設計

語言組成

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

傳送指令

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

邏輯運算

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

移位指令

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

位操作

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

控制轉移

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

串操作

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

輸入輸出

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

特色功能

語言特點

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

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

優點

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

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

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

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

缺點

因(yin)為代碼非(fei)常(chang)單調,特殊指令字(zi)符很少,所(suo)以造(zao)成了代碼的冗長以及(ji)編寫的困難

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

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

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

對比高級語言

區別

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

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

聯系

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

相關技術

匯編器

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

編譯環境

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

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

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

品牌介紹

發展前景

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

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

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