複製鏈接
請複製以下鏈接發送給好友

機器語言

鎖定
機器語言是機器能直接識別的程序語言指令代碼,無需經過翻譯,每一操作碼在計算機內部都有相應的電路來完成它,或指不經翻譯即可為機器直接理解和接受的程序語言或指令代碼。機器語言使用絕對地址和絕對操作碼。不同的計算機都有各自的機器語言,即指令系統。從使用的角度看,機器語言是最低級的語言。
中文名
機器語言
外文名
machine language
定    義
計算機直接識別的二進制代碼
優    點
直接執行,速度快,資源佔用少
缺    點
可讀性、可移植性差,編程繁雜
學    科
計算機科學與技術

機器語言簡介

編程語言是用來定義計算機程序形式語言,用來向計算機發出指令。計算機語言數量很多,每年都會產生大量新的編程語言。按層次來分,編程語言可分為3類:機器語言、彙編語言和高級語言。機器語言由機器指令集構成,能夠直接被機器執行。機器語言寫的程序存在不便於閲讀、難以記憶的問題。彙編語言本質上也是直接對硬件操作,由於採用了助記符,相比機器語言更加方便書寫與閲讀。在高級語言中,將多條彙編程序語句合併成更簡潔的編程語句,同時自動完成一些如堆棧寄存器分配管理等工作,更加方便程序員開發程序
指令系統 指令系統
機器語言是用二進制代碼表示的計算機能直接識別和執行的一種機器指令的集合。它是計算機的設計者通過計算機的硬件結構賦予計算機的操作功能。機器語言具有靈活、直接執行和速度快等特點。不同型號的計算機其機器語言是不相通的,按着一種計算機的機器指令編制的程序,不能在另一種計算機上執行。
一條指令就是機器語言的一個語句,它是一組有意義的二進制代碼,指令的基本格式如,操作碼字段和地址碼字段,其中操作碼指明瞭指令的操作性質及功能,地址碼則給出了操作數或操作數的地址。
用機器語言編寫程序,編程人員要首先熟記所用計算機的全部指令代碼和代碼的涵義。手編程序時,程序員得自己處理每條指令和每一數據的存儲分配和輸入輸出,還得記住編程過程中每步所使用的工作單元處在何種狀態。這是一件十分繁瑣的工作。編寫程序花費的時間往往是實際運行時間的幾十倍或幾百倍。而且,編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯。除了計算機生產廠家的專業人員外,絕大多數的程序員已經不再去學習機器語言了。

機器語言指令格式

機器語言指令是一種二進制代碼,由操作碼和操作數兩部分組成。操作碼規定了指令的操作,是指令中的關鍵字,不能缺省。操作數表示該指令的操作對象。計算機的指令格式與機器的字長、存儲器的容量及指令的功能都有很大的關係。從便於程序設計、增加基本操作並行性、提高指令功能的角度來看,指令中應包含多種信息。但在有些指令中,由於部分信息可能無用,這將浪費指令所佔的存儲空間,並增加了訪存次數,也許反而會影響速度。因此,如何合理、科學地設計指令格式,使指令既能給出足夠的信息,又使其長度儘可能地與機器的字長相匹配,以節省存儲空間,縮短取值時間,提高機器的性能,這是指令格式設計中的一個重要問題。
計算機是通過執行指令來處理各種數據的。為了指出數據的來源、操作結果的去向及所執行的操作,一條指令必須包含下列信息:
(1)操作碼。它具體説明了操作的性質及功能。一台計算機可能有幾十條至幾百條指令,每一條指令都有一個相應的操作碼,計算機通過識別該操作碼來完成不同的操作。
(2)操作數的地址。CPU通過該地址就可以取得所需的操作數。
(3)操作結果的存儲地址。把對操作數的處理所產生的結果保存在該地址中,以便再次使用。
(4)下條指令的地址。執行程序時,大多數指令按順序依次從主存中取出執行,只有在遇到轉移指令時,程序的執行順序才會改變。為了壓縮指令的長度,可以用一個程序計數器(ProgramCounter,PC)存放指令地址。每執行一條指令,PC的指令地址就自動+1(設該指令只佔一個主存單元),指出將要執行的下一條指令的地址。當遇到執行轉移指令時,則用轉移地址修改PC的內容。由於使用了PC,指令中就不必明顯地給出下一條將要執行指令的地址。
一條指令實際上包括兩種信息即操作碼和地址碼。操作碼(OperationCode,OP)用來表示該指令所要完成的操作(如加、減、乘、除、數據傳送等),其長度取決於指令系統中的指令條數。地址碼用來描述該指令的操作對象,它或者直接給出操作數,或者指出操作數的存儲器地址寄存器地址(即寄存器名)。
指令包括操作碼域和地址域兩部分。根據地址域所涉及的地址數量,常見的指令格式有以下幾種。
①三地址指令:一般地址域中A1、A2分別確定第一、第二操作數地址,A3確定結果地址。下一條指令的地址通常由程序計數器按順序給出。
②二地址指令:地址域中A1確定第一操作數地址,A2同時確定第二操作數地址和結果地址。
③單地址指令:地址域中A 確定第一操作數地址。固定使用某個寄存器存放第二操作數和操作結果。因而在指令中隱含了它們的地址。
零地址指令:在堆棧型計算機中,操作數一般存放在下推堆棧頂的兩個單元中,結果又放入棧頂,地址均被隱含,因而大多數指令只有操作碼而沒有地址域。
⑤可變地址數指令:地址域所涉及的地址的數量隨操作定義而改變。如有的計算機的指令中的地址數可少至 0個,多至6個。

機器語言機器語言的應用

一條指令就是機器語言的一個語句,它是一組有意義的二進制代碼。各計算機公司設計生產的計算機,其指令的數量與功能、指令格式、尋址方式數據格式是差別的。從計算機的發展過程可以看到,由於構成計算機的基本硬件發展迅速,計算機的更新換代很快,這就存在軟件如何跟上硬件的問題。一台新機器推出交付使用時,只有少量系統軟件(如操作系統等)可提交用户,大量軟件是不斷充實的,尤其是應用程序,有相當一部分是用户在使用機器時不斷產生的。為了緩解新機器的推出致使原有應用程序不能繼續使用的問題,各個計算機公司生產的同一系列的計算機時,儘管其硬件實現方法可以不同,但指令系統、數據格式、I/O系統等保持相同,因而軟件完全兼容。當研製該系列計算機的新型號時,儘管指令系統可以有較大的擴充,但仍保留了原來的全部指令,使軟件向上兼容,即舊機型上的軟件不加修改即可在新機器上運行。
説到這裏大家明白為什麼電腦即計算機,計算機即電腦了吧,原來無論它表現得多麼地智能,其實質也不過是這些二進制代碼運算的結果。但是二進制代碼使用起來太費勁了,於是後來就在其基礎上發展出的彙編語言,但是彙編依然看起來不直觀,於是最終就出現了現代編程所採用的高級語言。這是計算機編程語言的發展。有了編程語言,按説就可以使這些機器為我所用了。實際還沒那麼簡單。首先每做一件事,都要重複編一大堆的操作程序,工作量很大。其次,咱們都看到了,使用計算機的人,大多數,都不是計算機專業的,甭説編程了,操作步驟複雜一點都要抵制。所以,還需要一個操作系統,將複雜的操作留給自己,把簡單的操作,呈現給用户。
機器語言程序兼容。機器語言就是用硬件實現的機器指令。實現用機器語言編寫的程序兼容對計算機體系結構有非常苛刻的要求,需要實現兼容的兩台計算機的體系結構和操作系統的用户程序接口等應完全相同;即使略有不同,也可用軟件模擬或硬件仿真實現兼容。但這些方法將使用户程序的運算速度明顯降低。

機器語言主要缺點

總況
1.大量繁雜瑣碎的細節牽制着程序員,使他們不可能有更多的時間和精力去從事創造性的勞動,執行對他們來説更為重要的任務。如確保程序的正確性、高效性。
2.程序員既要駕馭程序設計的全局又要深入每一個局部直到實現的細節,即使智力超羣的程序員也常常會顧此失彼,屢出差錯,因而所編出的程序可靠性差,且開發週期長
3.由於用機器語言進行程序設計的思維和表達方式與人們的習慣大相徑庭,只有經過較長時間職業訓練的程序員才能勝任,使得程序設計曲高和寡。
4.因為它的書面形式全是"密"碼,所以可讀性差,不便於交流與合作。
5.因為它嚴重地依賴於具體的計算機,所以可移植性差,重用性差。
弱通用性
各計算機公司設計生產的計算機,其指令的數量與功能、指令格式尋址方式數據格式都有差別,即使是一些常用的基本指令,如算術邏輯運算指令轉移指令等也是各不相同的。因此,儘管各種型號計算機的高級語言基本相同,但將高級語言程序編譯成機器語言後,其差別也是很大的。因此將用機器語言表示的程序移植到其他機器上去幾乎是不可能的。從計算機的發展過程已經看到,由於構成計算機的基本硬件發展迅速,計算機的更新換代是很快的,這就存在軟件如何跟上的問題。大家知道,一台新機器推出交付使用時,僅有少量系統軟件(如操作系統等)可提交用户,大量軟件是不斷充實的,尤其是應用程序,有相當一部分是用户在使用機器時不斷產生的,這就是所謂第三方提供的軟件。
為了緩解新機器的推出與原有應用程序的繼續使用之間的矛盾,1964年在設計IBM360計算機時所採用的系列機思想較好地解決了這一問題。從此以後,每個計算機公司生產的同一系列的計算機儘管其硬件實現方法可以不同,但指令系統、數據格式、I/O系統等保持相同,因而軟件完全兼容(在此基礎上,產生了兼容機)。當研製該系列計算機的新型號或高檔產品時,儘管指令系統可以有較大的擴充,但仍保留了原來的全部指令,保持軟件向上兼容的特點,即低檔機或舊機型上的軟件不加修改即可在比它高檔的新機器上運行,以保護用户在軟件上的投資。