高级语言.汇编语言和机器语言
?機器語言 <![endif]> (Machine language)
機器語言Machine Language(低級語言)
機器語言是計算機唯一能接受和執行的語言。機器語言由二進制碼組成,每一串二進制碼叫做一條指令。一條指令規定了計算機執行的一個動作。一臺計算機所能懂得的指令的全體,叫做這個計算機的指令系統。不同型號的計算機的指令系統不同。
指令通常由幾個字節組成,第一個字節是操作碼,它規定了計算機要執行的基本操作;后面的字節是操作數,它規定了操作對象或操作對象的地址。
機器語言是直接用二進制代碼指令表達的計算機語言,指令是用0和1組成的一串代碼,它們有一定的位數,并分成若干段,各段的編碼表示不同的含義,例如某臺計算機字長為16位,即有16個二進制數組成一條指令或其它信息。16個0和1可組成各種排列組合,通過線路變成電信號,讓計算機執行各種不同的操作。
如某種計算機的指令為1011011000000000,它表示讓計算機進行一次加法操作;而指令1011010100000000則表示進行一次減法操作。它們的前八位表示操作碼,而后八位表示地址碼。從上面兩條指令可以看出,它們只是在操作碼中從左邊第0位算起的第6和第7位不同。這種機型可包含256(=28)個不同的指令。
機器語言或稱為二進制代碼語言,計算機可以直接識別,不需要進行任何翻譯。每臺機器的指令,其格式和代碼所代表的含義都是硬性規定的,故稱之為面向機器的語言,也稱為機器語言。它是第一代的計算機語言。機器語言對不同型號的計算機來說一般是不同的。
使用機器語言編寫程序是一種相當煩瑣的工作,既難于記憶也難于操作,編寫出來的程序全是由0和1的數字組成,直觀性差、難以閱讀。不僅難學、難記、難檢查、又缺乏通用性,給計算機的推廣使用帶來很大的障礙。
最早的程序設計語言都采用機器語言來編寫。當時,要在計算機上運行的所有算法都必須直接用機器語言來表達,計算機才能接受。算法的運算序列包括運算對象和運算結果都必須轉換為指令序列。其中的每一條指令都以編碼(指令碼和地址碼)的形式出現。與算法語言表達的算法,相差十萬八千里。對于沒受過程序設計專門訓練的人來說,一份程序恰似一份"天書",讓人看了不知所云,可讀性極差。
用機器語言表達算法的運算、數據和控制十分繁雜瑣碎,因為機器語言所提供的指令太初等、原始。機器語言只接受算術運算、按位邏輯運算和數的大小比較運算等。對于稍復雜的運算,都必須一一分解,直到到達最初等的運算才能用相應的指令替代之。機器語言能直接表達的數據只有最原始的位、字節、和字三種。算法中即使是最簡單的數據如布爾值、字符、整數、和實數,也必須一一地映射到位、字節和字中,還得一一分配它們的存儲單元。對于算法中有結構的數據的表達則要麻煩得多。機器語言所提供的控制轉移指令也只有無條件轉移、條件轉移、進入子程序和從子程序返回等最基本的幾種。用它們來構造循環、形成分支、調用函數和過程得事先做許多的準備,還得靠許多的技巧。
直接用機器語言表達算法有許多缺點。
????????? 大量繁雜瑣碎的細節牽制著程序員,使他們不可能有更多的時間和精力去從事創造性的勞動,執行對他們來說更為重要的任務。如確保程序的正確性、高效性。
????????? 程序員既要駕馭程序設計的全局又要深入每一個局部直到實現的細節,即使智力超群的程序員也常常會顧此失彼,屢出差錯,因而所編出的程序可靠性差,且開發周期長。
????????? 由于用機器語言進行程序設計的思維和表達方式與人們的習慣大相徑庭,只有經過較長時間職業訓練的程序員才能勝任,使得程序設計曲高和寡。
????????? 因為它的書面形式全是"密"碼,所以可讀性差,不便于交流與合作。
????????? 因為它嚴重地依賴于具體的計算機,所以可移植性差,重用性差。
這些弊端造成當時的計算機應用未能迅速得到推廣。
匯編語言(Assember language)
匯編語言Assembler Language(低級語言)
為了克服機器語言上述的缺點,出路在于程序設計語言的抽象,讓它盡可能地接近于算法語言。為此,人們首先注意到的是可讀性和可移植性,因為它們相對地容易通過抽象而得到改善。于是,很快就出現匯編語言。這種語言對機器語言的抽象,首先表現在將機器語言的每一條指令符號化:指令碼代之以記憶符號,地址碼代之以符號地址,使得其含義顯現在符號上而不再隱藏在編碼中,可讓人望"文"生義。其次表現在這種語言擺脫了具體計算機的限制,可在不同指令集的計算機上運行,只要該計算機配上匯編語言的一個匯編程序。這無疑是機器語言朝算法語言靠攏邁出的一步。但是,它離算法語言還太遠,以致程序員還不能從分解算法的數據、運算和控制到匯編才能直接表達的指令等繁雜瑣碎的事務中解脫出來。
用能反映指令功能的助記符表達的計算機語言叫匯編語言。它是符號化了的機器語言。用匯編語言編寫的程序叫匯編語言源程序,計算機無法執行。必須用匯編程序把它翻譯成機器語言目標程序,計算機才能執行。這個翻譯過程稱為匯編過程。
匯編語言是用助記符表示指令功能的計算機語言。與機器語言相比,匯編語言具有以下的幾個特點:第一,它使用符號來表示操作碼和地址碼,這種符號便于記憶,稱為記憶碼。第二,匯編程序自動處理存儲分配,毋需程序員做存儲分配工作。第三,程序員可以直接書寫十進制數`
例如,要計算c=7+8,可以用如下幾條匯編命令:
標號??????? 指令?????????????????? 說明
START????? GET 7;????????? 把7送進累加器ACC中
???????????? ADD 8;???????? 累加器ACC+8送進累加器ACC中
???????????? PUT C;???????? 把累加器ACC送進C中
END??????? STOP;????????? 停機
其中(ACC)表示累加器中的值,等等。
如此簡單的匯編語言,只是符號形式的機器語言,但用它來編寫程序或閱讀已經編寫好的程序比起機器語言來要簡單和方便多了。這就是計算機語言發展中的第二代語言—匯編語言。人們使用這種助記符編寫程序后,要是計算機能夠接受,還必須把編好的程序逐條翻譯成二進制編碼的機器語言。當然,這個工作并不是有程序員來完成,而是有稱為“匯編程序”的程序自動完成的。匯編程序的功能就是把由匯編語言編寫的程序(稱為匯編語言源程序)翻譯成機器語言程序,計算機才能執行該程序。這個翻譯過程稱為匯編。
匯編語言比起機器語言在很多方面都有很大的優越性,如編寫容易、修改方便、閱讀簡單、程序清楚等,但在計算機語言系統中,把匯編語言仍然列入“低級語言”的范疇,它仍然是屬于面向機器的語言,也就是說,不同的計算機可以有不同的指令集。
高級語言(High-level language)
高級語言
機器語言和匯編語言都是面向機器的,高級語言是面向用戶的。到了50年代中期,出現程序設計的高級語言如Fortran,Algol60,以及后來的PL/l,Pascal等,算法的程序表達才產生一次大的飛躍。用高級語言編寫的程序叫做高級語言源程序,必須翻譯成機器語言目標程序才能被計算機執行。高級語言的翻譯有兩種方式:編譯方式和解釋方式。
????????? 編譯方式:先由編譯程序把高級語言源程序翻譯成目標程序,執行時運行目標程序。
????????? 2.解釋方式:在運行高級語言源程序時,由解釋程序對源程序邊翻譯邊執行。
誠然,算法最終要表達為具體計算機上的機器語言才能在該計算機上運行,得到所需要的結果。但匯編語言的實踐啟發人們,表達成機器語言不必一步到位,可以分兩步走或者可以筑橋過河。即先表達成一種中介語言,然后轉成機器語言。匯編語言作為一種中介語言,并沒有獲得很大成功,原因是它離算法語言還太遠。這便指引人們去設計一種盡量接近算法語言的規范語言,即所謂的高級語言,讓程序員可以用它方便地表達算法,然后借助于規范的高級語言到規范的機器語言的"翻譯",最終將算法表達為機器語言。而且,由于高級語言和機器語言都具有規范性,這里的"翻譯"完全可以機械化地由計算機來完成,就像匯編語言被翻譯成機器語言一樣,只要計算機配上一個編譯程序。
上述兩步,前一步由程序員去完成,后一步可以由編譯程序去完成。在規定清楚它們各自該做什么之后,這兩步是完全獨立的。它們各自該如何做互不相干。前一步要做的只是用高級語言正確地表達給定的算法,產生一個高級語言程序;后一步要做的只是將第一步得到的高級語言程序翻譯成機器語言程序。至于程序員如何用高級語言表達算法和編譯程序如何將高級語言表達的算法翻譯成機器語言表達的算法,顯然毫不相干。
為了解決低級語言的缺點,人們為了從根本上擺脫語言對機器的依賴,使之獨立于機器,由面向機器改為面向過程,經過多年精心的研究,終于在1954年首先創造出一種與具體的計算機指令系統無關的、表達方式或接近于人們對求解過程或問題的描述方式,且易于掌握和書寫的語言,這就是FORTRAN語言。人們把具有以上特點的語言稱為高級語言,這就是計算機語言系統中的第三代語言。
例如計算A=1+2,若用高級語言(如BASIC語言)編寫,只要兩條語句:
10?????? A=1+2
11?????? END
就可以完成A=1+2的操作。這種語言,人們易于掌握和理解,即使小學生也容易掌握,便于推廣,它不再是面向機器,而是“面向過程”,即用戶不僅要告訴計算機“做什么”,還要告訴計算機“怎么做”,也就是把每一步操作事先設計好,然后再編寫程序,讓計算機按照指定的步驟去執行。目前,世界上已經有幾百種不同類型、功能各異的高級語言。使用較多的有:
BASIC
FORTRAN
PASCAL
C
PL/I
ADA
LISP
程序設計語言從機器語言到高級語言的抽象,帶來的主要好處是:
高級語言接近算法語言,易學、易掌握,一般工程技術人員只要幾周時間的培訓就可以勝任程序員的工作;
高級語言為程序員提供了結構化程序設計的環境和工具,使得設計出來的程序可讀性好,可維護性強,可靠性高;
高級語言遠離機器語言,與具體的計算機硬件關系不大,因而所寫出來的程序可移植性好,重用率高;
由于把繁雜瑣碎的事務交給了編譯程序去做,所以自動化程度高,開發周期短,且程序員得到解脫,可以集中時間和精力去從事對于他們來說更為重要的創造性勞動,以提高程序的質量。
?
/
程序語言的種類之一,由被稱作翻譯器(interpreter)的軟件一邊把人類記述的程序變換成電腦可執行的形式,一邊執行的形式的語言。
?
解釋語言是 電腦使用的機器語言,與機器語言1對1地對應的匯編語言相比,高抽象度,與人類平常使用的自然語言相近的感覺的高級語言。由于電腦無法識別人類所記述的源代碼,所以由解釋語言(腳本引擎)翻譯成機器語言,變換成可執行的程序。
?
高級語言里還有,一并地轉換成機器語言的程序之后再執行的編譯語言。這個語言,由于需要先把程序轉換成機器語言程序然后再執行,所以在開發的速度與容易度,修正的方便性上都不如匯編語言,但是,由于不需要同時翻譯,所以在實效速度上占有很大的優勢。還有,解釋語言中的執行環境里需要源代碼,編譯語言里就不需要。
?
總結
以上是生活随笔為你收集整理的高级语言.汇编语言和机器语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu没有无线wifi解决办法
- 下一篇: 高级语言编译/解释流程