電子計算機包括硬件和軟件兩個不可分割的部分。即使一台硬件功能十分齊全的計算機,如果沒有相應的軟件支持,也是無法工作的。微型機軟件與硬件互相依賴、互相滲透和互相結合就更緊密了。例如,微型機的可編程序接口,若沒有程序支持就不能正常工作。無論是微型機的設計者或者用戶,都要掌握程序的編製,因為微處理器、存儲器和1/0接口等組件的出現大大地簡化了硬件係統的設計,但整個係統設計工作量並沒有減少,軟件成為係統設計的主要工作了,設計入員很大部分精力用於軟件的研製,硬件的設計製造者要成為程序設計入員。在比較複雜的係統中,或許有專業的編程入員,但係統硬件電路的設計者一定要了解軟件,才能使他所設計的機器最好用。值得注意的是,國外幾乎所有微處理器製造廠家,都向用戶提供完整的研製軟件的程序包:編輯、監控、彙編等。這種做法使軟件硬件的研製成為一家。市場上已有軟硬件合一的器件,如把16位微處理器與/似操作係統做在同一芯片的80156。對於微型機用戶,掌握程序的編製就更重要了編製程序的方法有很多種,本章介紹的是如何陡用彙編語言進行程序設計,
4.1 彙編語言
4.1-1 機器語言、彙編語言和高級語言
一、機器語言
用二進製編碼表示的指令,稱為機器指令,或稱為機器碼。用機器指令編寫的程序稱為機器浯言程序,或稱為目標程序,這是計算機能直接執行的程序。
左邊第二列是二進製的機器語言程序,這段程序雖然很短,但不加以說明也是不好讀懂的。編製程序和輸入程序橾作時很容易出錯,出錯了也很難發現。二進製機器指令太長,書寫很費勁。為方便書寫,采用八進製或十六進製來書寫,在微型機中,一般用十六進製來書寫。第三列是用十六進製表示的機器指令。因為書寫短,情況有所改善,用十六進製表示,通過鍵盤輸入程序容易了,但還是不易理解,不易記憶,也很易出錯。此外還必須給程序分配存儲單元,這也是很不方便的工作。特別是在需要變更指令或數據的存儲單元,或者修改程序本身,比如插入或刪去部分指令的情況下用機器浯言編寫程序更顯得煩瑣易錯。
二、彙編語言
為了克服機器語言的缺點,現代計算機一般都配備“彙編語言”。第四列是彙編海宮程序。從表中看出,每一條指令都比機器語言意義明確。這是因為指令的操作碼用像義明確的助記符表示,例如,在Z80中,數據傳送指令用助記符表示。例如指令108,10,表示為立即數10送到8寄存器。顯然,8,10比機器指令0611,意義明確多了,也就容易理解和記憶。另外操作數用符號(或標號)表示,給修改程序、插入或刪去指令帶來方便,特別是對於轉移指令的轉移地址用標號表示,意義更大。
每插入一條或刪去一條指令,都會引來指令的修改。若用標號代替,8指令的入口地址,則無論8指令存儲單元地址如何變更,均與之保持一致。此外彙編語言中還提供了一整套偽指令,擴大了語言的靈活性和編寫程序的能力。同時,使所編的程序直觀明確,便於閱讀。
用彙編語言來編程序也存在一些問題。首先,微型機的指令,和實際工作中要執行的任務有很大差別,例如要計算機完成的任務是電動機的速度調節或爐溫的控製,或者要求在合適的時間啟動水泵、風機等等。這些任務要用一係列指令組成。其次,如果你要用彙編語言來編程序,你必須了解你使用的微型機的指令係統,有什麼寄存器以及尋址方式等等。此外,彙編語言程序是不能移植的。每種機器都有它自己的彙編語言(除軟件兼容者外)。例如,為Z80寫的彙編語言程序就不能移植到從6800上去。不能移植是很大的缺陷,它意味著你所編的程序不能在其他機器上運行,你也不能使用別的彙編語言編寫的程序在你的機器上運行。
對於彙編語言程序,計算機不能直接執行,我們必須先將它翻譯成機器語言。可以用手工方法翻譯,即礙彙編旨令逐條翻譯機器作令,這是手工彙編手工彙編是很煩瑣、乏味的工作,而且容易出錯。尤其是微型機的指令,有1字節指令,有2字節、3字節和4字節指專廠分配地址,就很麻煩。
三、高級語言
為了克服彙編語言的缺陷,可使用高級語言。高級語言是“麵向過程”的語言,用高級語言編程序不必了解機器的內部過程和指令係統。而且,用高級語言編寫的,源程序,一般在不同的機器上都可以運行。高級語言的語句功能強,一個語句往往相當於許多條指令,從而使編程序更快,更容易。高級語言更接近入們熟悉的語言,因此,更便於學習和使用。但是用高級語言編寫的源程序,必須通過編譯程序翻譯成機器語言的目標程序,機器才能執行。編譯程序價格昂貴,而且還要占用較大的存儲空間,因而,執行時間要長,這在實時控製中是很不利的。
四、采用什麼級別的語言
采用什麼級別的語言,這取決於機器使用場合和條件。機器語言不好理解,不好記憶,容易出錯,但在機器上可以直接執行,不要配備編譯的軟件。自前在存儲容量小,顯示設備簡單的單板機上,一般使用機器語言。但實際上,程序還是用彙編齒言編寫,再用手工或機器編成機器語言的目標程序,
在微型機中,更多是用彙編語言。因為它費用比高級語言低,編程序比機器蓓言方便,特別對實時控製,有限數據處理,:輸入/輸出控製等、用彙編語言都很適宜。隨著大容量高密度的半導體存儲器芯片的出現,存儲器越來越便宜,將有利於在微型權上使羽高級語言。但彙編語言,執行速度更快,能提供更細的控製,故許多用戶將繼續使用彙編語言來進符程序設計。
4.1-2 彙編語言的組成
彙編語言是一種程序設計語言,它由哪些語句構成的,它的語句構成規則是什麼,使用它編程序有什麼語法規定和要求等等,本節將作簡單介紹。
彙編語言由三種語句構成:
①指令彙編語句(即符號指令或稱執行指令)。在Z80指令係統中,共有150條符號指令,在彙編成目標程序時,這種指令會產生相對應的目標指令代碼。