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