劉昆
摘要:計算機組為什么有別于其他人類發(fā)明的工具,能夠自動、準確的執(zhí)行人們事先編制好的程序,要回答這個問題,就需要大家對機器語言、匯編語言、計算機高級語言進行理解,該文結(jié)合多年的教學經(jīng)驗,使用簡單的例子對機器語言、匯編語言、計算機高級語言三種語言進行比較,使讀者很容易理解三種語言。
關鍵詞:機器語言;匯編語言;計算機高級語言
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)08-0093-02
計算機組為什么有別與其他人類發(fā)明的工具,能夠自動、準確的執(zhí)行人們事先編制好的程序?要回答這個問題我們必須理解機器語言、匯編語言、計算機高級語言。計算機高級語言很多人接觸到或者學習過不難理解;但是機器語言、匯編語言很少有人接觸,包括計算機專業(yè)的學生,這些年也逐漸不再開設匯編語言程序設計課程。計算機的層次結(jié)構(gòu)如圖1。
1計算機的機器語言
很多教材對計算機的機器語言概括為計算機能直接執(zhí)行的語言,用戶必須用二進制(0,1)來編寫程序,要求程序員對所使用的計算機硬件及其指令系統(tǒng)十分熟悉。這樣的解釋很抽象也很難理解。其實機器語言并不難理解,我們用教室的電燈系統(tǒng)來舉例,用Ki表示對應的開關;用1表示開關閉合,用0表示開關斷開;假如教室里有4個開關,分別控制不同的電燈。則教室里電燈系統(tǒng)的指令系統(tǒng)用二進制(0、1)表示出來如表1。
這里的指令系統(tǒng)中0000表示全滅,1111表示全亮。根據(jù)這個指令系統(tǒng)編寫了某個程序,Ti表示指令執(zhí)行的時間周期。程序如表2所示。
這是與電燈系統(tǒng)為例。如果以某機器為例,對ax2+bx+c進行運算,進行程序優(yōu)化為(ax+b)*x+c;具體機器語言步驟如圖2。
2匯編語言
通過上面兩個例子對機器語言能更好地理解。匯編語言是在機器語言的基礎上出現(xiàn)了符號式的程序設計語言。它用符號ADD表示加;SUB表示減;MUL表示乘;D1V表示除;MOV表示取數(shù)等。用匯編語言ax2+bx+c進行運算程序如下。
數(shù)據(jù)段定義a,b,c,x;
代碼段如下MOV A CCX;取數(shù)x至ACC;
MUL a;ACC的值乘于a,放到ACC中,即a*x->ACC;
ADD b;ACC的值加b,放到ACC中,即a*x+b->ACC;
MUL x;ACC的值乘于X,放到ACC中,即(a*x+b)*x->ACC;
ADD c;ACC的值加c,放到ACC中,即(a*x+b)*x+c->ACC;
MOV result,ACC;把結(jié)果從ACC送到result單元。
通過這個程序可以知道,匯編語言與機器語言是一一對應的,故需要程序員對計算機的硬件、結(jié)構(gòu)和指令系統(tǒng)都要熟悉。
3高級語言
高級語言對問題的描述十分接近人們的習慣,跟數(shù)學邏輯類似,并且有較強的通用性。如FORTRAN.BASIC、PASCAL、C等,比如C語言編寫ax2+bx+c進行運算程序如下。
4總結(jié)
通過對ax2+bx+c分別采用機器語言、匯編語言和高級語言(c程序)進行編程,讓大家體會、理解三種語言的功能。三種語言是一層層堆積起來的,從有了計算機的硬件,就有了機器語言,在機器語言的基礎上開發(fā)出匯編程序,從而有了匯編語言;在匯編語言的基礎上開發(fā)出支持高級語言的環(huán)境,從而有了高級語言,使大家可以方便地使用高級語言編程。但最終高級語言要轉(zhuǎn)換成機器語言才能在計算機上運行。