機(jī)器語言是什么
機(jī)器語言(machinelanguage)是一種指令集的體系。這種指令集,稱機(jī)器碼(machinecode),是電腦的CPU可直接解讀的數(shù)據(jù)。機(jī)器碼有時(shí)也被稱為原生碼(NativeCode),這個(gè)名詞比較強(qiáng)調(diào)某種編程語言或庫,它與運(yùn)行平臺相關(guān)的部份。
機(jī)器語言是用二進(jìn)制代碼表示的計(jì)算機(jī)能直接識別和執(zhí)行的一種機(jī)器指令的集合。它是計(jì)算機(jī)的設(shè)計(jì)者通過計(jì)算機(jī)的硬件結(jié)構(gòu)賦予計(jì)算機(jī)的操作功能。
一種cpu的指令系統(tǒng),也稱cpu的機(jī)器語言。它是該cpu可以識別的一組由1和0序列構(gòu)成的指令碼。用機(jī)器語言編程序,就是從實(shí)用的cpu的指令系統(tǒng)中挑選合適的指令,組成一個(gè)指令系列。
一條指令就是機(jī)器語言的一個(gè)語句,它是一組有意義的二進(jìn)制代碼,指令的基本格式如,操作碼字段和地址碼字段,其中操作碼指明了指令的操作性質(zhì)及功能,地址碼則給出了操作數(shù)或操作數(shù)的地址。
用機(jī)器語言編寫程序,編程人員要首先熟記所用計(jì)算機(jī)的全部指令代碼和代碼的涵義。手編程序時(shí),程序員得自己處理每條指令和每一數(shù)據(jù)的存儲(chǔ)分配和輸入輸出,還得記住編程過程中每步所使用的工作單元處在何種狀態(tài)。這是一件十分繁瑣的工作。編寫程序花費(fèi)的時(shí)間往往是實(shí)際運(yùn)行時(shí)間的幾十倍或幾百倍。而且,編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯(cuò)。除了計(jì)算機(jī)生產(chǎn)廠家的專業(yè)人員外,絕大多數(shù)的程序員已經(jīng)不再去學(xué)習(xí)機(jī)器語言了。
機(jī)器語言是微處理器理解和使用的,用于控制它的操作二進(jìn)制代碼。
8086到Pentium的機(jī)器語言指令長度可以從1字節(jié)到13字節(jié)。
盡管機(jī)器語言好像是很復(fù)雜的,然而它是有規(guī)律的。
存在著多至100000種機(jī)器語言的指令。這意味著不能把這些種類全部列出來。
范例:
1、指令部份的范例
0000代表加載(LOAD)
0001代表儲(chǔ)存(SET)
。。。
2、暫存器部份的范例
0000代表暫存器A
0001代表暫存器B
。。。
3、內(nèi)存部份的范例
000000000000代表位址為0的內(nèi)存
000000000001代表位址為1的內(nèi)存
000000001000代表位址為16的內(nèi)存
100000000000代表位址為2^11的內(nèi)存
4、集成范例
0000,0000,000000001000代表LOADA,16
0000,0000,000000000001代表LOADB,1
0000,0001,000000001000代表STOREB,16
0000,0001,000000000001代表STOREB,1
機(jī)器語言缺點(diǎn)
1.大量繁雜瑣碎的細(xì)節(jié)牽制著程序員,使他們不可能有更多的時(shí)間和精力去從事創(chuàng)造性的勞動(dòng),執(zhí)行對他們來說更為重要的任務(wù)。如確保程序的正確性、高效性。
2.程序員既要駕馭程序設(shè)計(jì)的全局又要深入每一個(gè)局部直到實(shí)現(xiàn)的細(xì)節(jié),即使智力超群的程序員也常常會(huì)顧此失彼,屢出差錯(cuò),因而所編出的程序可靠性差,且開發(fā)周期長。
3.由于用機(jī)器語言進(jìn)行程序設(shè)計(jì)的思維和表達(dá)方式與人們的習(xí)慣大相徑庭,只有經(jīng)過較長時(shí)間職業(yè)訓(xùn)練的程序員才能勝任,使得程序設(shè)計(jì)曲高和寡。
4.因?yàn)樗臅嫘问饺恰懊堋贝a,所以可讀性差,不便于交流與合作。
5.因?yàn)樗鼑?yán)重地依賴于具體的計(jì)算機(jī),所以可移植性差,重用性差。
這些弊端造成當(dāng)時(shí)的計(jì)算機(jī)應(yīng)用未能迅速得到推廣。
機(jī)器語言指令概述
用匯編語言指令編寫的匯編語言程序輸入計(jì)算機(jī)后,計(jì)算機(jī)并不能識別和執(zhí)行,必須由機(jī)器提供的匯編程序?qū)⑺g成由機(jī)器語言指令組成的程序,才能由計(jì)算機(jī)執(zhí)行。通常這種翻譯工作不必由人來干預(yù)。本節(jié)只簡單介紹一下機(jī)器語言指令的構(gòu)成,以便讀者在實(shí)際應(yīng)用(實(shí)時(shí)控制)中也可完成類似的轉(zhuǎn)換工作。
8086/8088的機(jī)器語言指令為可變字節(jié)的指令,一條指令可以由1~7個(gè)字節(jié)組成,因此指令格式比較靈活。其格式如下所示:
其中,opcode為操作碼字段;d指示操作方向;S表示符號擴(kuò)展;W指示操作數(shù)寬度;mod用來區(qū)分是寄存器尋址還是存儲(chǔ)器尋址;reg寄存器編碼;r/m寄存器或存儲(chǔ)器;disp-low位移量低位;disp-high位移量高位;data-low立即數(shù)低位;data-high立即數(shù)高位。
格式中給出了1~6個(gè)字節(jié)的情形。如果指令中顯示指定段跨越前綴,則在機(jī)器語言指令中使用放在該指令之前的一個(gè)字節(jié)來表示,其格式如下所示:
其中,001和110均為段前綴標(biāo)志;SEG指定四個(gè)段寄存器中的一個(gè),00為ES,01為CS,10為SS,11為DS
1、操作碼的機(jī)器語言表示
操作碼一般占用第一個(gè)字節(jié)的7~2位,但有些指令的操作碼占用第一個(gè)字節(jié)的7~1位,甚至還可能占用第二個(gè)字節(jié)的5~3位作為擴(kuò)展操作碼。
在多數(shù)操作碼中,常使用某些位來指示某些信息。例如第一個(gè)字節(jié)中的W位用來指示該指令是對字節(jié)(W=1)還是對字節(jié)(W=0)進(jìn)行操作。在雙操作數(shù)指令中,d位指定寄存器是用于目的操作數(shù)(d=1)還是用于源操作數(shù)(d=0)。另外,在立即尋址方式的指令中,S位表示符號擴(kuò)展,若立即數(shù)為8位,但要求擴(kuò)展成16位數(shù)時(shí),S位為1。S位和W位在立即尋址方式指令中聯(lián)用表示:
2、尋址方式的機(jī)器語言表示
指令中除操作碼占用的位數(shù)外,其它位則用來表示操作數(shù)或操作數(shù)的地址。8086/8088用一個(gè)尋址方式字節(jié)來表示操作數(shù)的尋址方式,它通常是機(jī)器指令的第二個(gè)字節(jié)。
第二個(gè)字節(jié)中的reg字段表示尋址方式為寄存器方式,在雙操作數(shù)指令的情況下,由reg和第一個(gè)字節(jié)中的W位聯(lián)合指定一個(gè)寄存器作為兩個(gè)操作數(shù)中的一個(gè)操作數(shù)。Reg與W位聯(lián)合指定的寄存器如表6-4-1所示。
第二個(gè)字節(jié)中的mod字段與r/m字段相結(jié)合以確定另一個(gè)操作數(shù)的尋址方式。其中:
Mod=00時(shí)為無位移量字節(jié)的存儲(chǔ)器尋址方式。由r/m字段指定確切的尋址方式,其中當(dāng)r/m=110時(shí)指定為直接尋址方式,此時(shí)指令中跟有16位位移量D16,用來指出操作數(shù)的偏移地址。
Mod=01時(shí)為帶一個(gè)位移量字節(jié)的存儲(chǔ)器尋址方式。由r/m字段指定確切的尋址方式。其中位移量字節(jié)為一個(gè)帶符號數(shù),因此它的范圍是-128~+127。當(dāng)用這個(gè)位移量D8計(jì)算存儲(chǔ)器地址時(shí),它將被符號擴(kuò)展成16位。
Mod=10時(shí)為帶兩個(gè)位移量字節(jié)的存儲(chǔ)器尋址方式。由r/m字段指定確切的尋址方式。第一個(gè)偏移量字節(jié)是偏移量的低8位,第二個(gè)偏移量字節(jié)是偏移量的高8位。這個(gè)16位的位移量也是一個(gè)帶符號數(shù),因此它的范圍是-32768~+32767。Mod=11時(shí)為寄存器尋址方式。r/m字段表示寄存器,也是與第一個(gè)字節(jié)的W位一起確定一個(gè)寄存器。Mod字段與r/m字段聯(lián)合使用確定尋址方式由表6-4-2給出。
機(jī)器語言指令
1.compiledmachinelanguageinstruction
編譯的機(jī)器語言指令
2.Aphraseoftenassociatedwithamacroinstruction,whereonesourcelanguageinstructionisconvertedtoseveralmachinelanguageinstructions.
通常與宏指令有關(guān)的一種用語,即把一條源語言指令轉(zhuǎn)換成若干條機(jī)器語言指令。
3.asinglecomputerinstructionthatresultsinaseriesofinstructionsinmachinelanguage.
一個(gè)單一的計(jì)算機(jī)指令可引起一系列的機(jī)器語言指令。
4.Areportpreparedbyaprocessorwhichshowsthecodingasoriginallywritten,anycommentsthatmayhavebeenwritten,andthemachinelanguageinstructionsproduced.
處理機(jī)作成的一種報(bào)告,其上表示出原寫入的編碼、注釋以及產(chǎn)生的機(jī)器語言指令。
5.Asingleinstructioninprogramminglanguagethatresultsinaseriesofinstructionsinmachinelanguage.
宏指令計(jì)算機(jī)編程語言中可以在機(jī)器語言中形成一系列指令的命令
6.Assembler:Aprogamminglanguageinwhichonemnemonicsourcestatementiscodedforeachmachine-levelinstruction.
匯編語言:一種編程語言,每一條助記符源語句都對應(yīng)一條機(jī)器指令。
7.Anassemblerlanguageprogrammerwritesonemnemonicinstructionforeachmachine-levelinstruction.
匯編語言程序設(shè)計(jì)員為每條機(jī)器指令寫一條助記符指令。
8.machine-independentcommandlanguage
獨(dú)立于機(jī)器的命令語言
9.Aprogramthattranslatesinstructionswritteninahighlevelprogramminglanguageintomachinelanguage.
一種把用高級編程語言編寫的指令翻譯成機(jī)器語言的程序。
10.Aprogramminglanguagewhoseinstructionsareexpressedinsymbolsconvenienttohumansratherthaninmachinelanguage.
不用機(jī)器語言而用對人方便的符號表示各種指令的一種編程語言。
11.Aprogramthattranslatesaninstructionintoamachinelanguageandexecutesitbeforeproceedingtothenextinstruction.
解釋程序?qū)⒅噶罘g為機(jī)器語言并在執(zhí)行下一個(gè)指令之前完成此指令的程序
12.(computerscience)aprogramthatdecodesinstructionswritteninahigherorderlanguageandproducesamachinelanguageprogram.
(計(jì)算機(jī)科學(xué)上)用更高命令語言所寫的解碼指令程序來產(chǎn)出機(jī)器語言程序。
13.Otherprogramsthentranslatetheinstructionsintomachinelanguageforthecomputertouse.
接著將程序翻譯成指令成為機(jī)器語言,給計(jì)算機(jī)使用。
14.Theprocesswherebyadigitalcomputertranslatestheinstructionsofaprogramwritteninahigh-levellanguageintotheirmachinelanguageequivalents.
數(shù)字計(jì)算機(jī)借此把高級語言編寫的程序中的指令翻譯成與其等價(jià)的機(jī)器語言程序的處理過程。
15.Assemblylanguageisactuallyacommand-basedredivsentationoftheactualinstructionsthatyourcomputer‘sprocessorruns.
匯編語言實(shí)際上是你計(jì)算機(jī)處理器實(shí)際運(yùn)行的指令的命令形式表示法。
16.Acomputer-orientedlanguagewhoseinstructionsconsistonlyofcomputerinstructions.
一種面向計(jì)算機(jī)的語言,其指令只由計(jì)算機(jī)指令組成。
17.Abasicorfundamentalunit,oftenreferringtothelowestofamachineinstructionorlowestunitoflanguagetranslation.
一種基本單位或基礎(chǔ)單位,常常指機(jī)器指令的最低一級或語言翻譯的最低的單位。
18.Asoftwaredevelopmenttoolthattranslateshuman-readableassemblylanguageprogramsintomachine-languageinstructionsthattheprocessorcanunderstandandexecute.
一個(gè)能把人可讀的匯編語言程序轉(zhuǎn)換到處理器可理解和運(yùn)行的機(jī)器指令的軟件開發(fā)工具。
-
指令
+關(guān)注
關(guān)注
1文章
608瀏覽量
35777 -
機(jī)器語言
+關(guān)注
關(guān)注
0文章
35瀏覽量
10765
發(fā)布評論請先 登錄
相關(guān)推薦
評論