壓電式壓力感測器

[拼音]:huibian chengxu

[英文]:assembler

把組合語言書寫的程式翻譯成與之等價的機器語言程式的翻譯程式。彙編程式輸入的是用匯編語言書寫的源程式,輸出的是用機器語言表示的目標程式。組合語言是為特定計算機或計算機系列設計的一種面向機器的語言,由彙編執行指令和彙編偽指令組成。彙編執行指令是機器指令的符號化表示,其操作碼用記憶符表示,地址碼直接用標號、變數名字、常數等表示。彙編執行指令經彙編程式翻譯為機器指令,二者之間基本上保持一一對應的關係。彙編偽指令又稱作彙編指示,用於向彙編程式提供使用者自定義的符號、資料的型別、資料空間的長度,以及目標程式的格式、存放位置等提示性資訊,其作用是指示彙編程式如何進行彙編。採用組合語言編寫程式雖不如高階程式設計語言簡便、直觀,但是彙編出的目標程式佔用記憶體較少、執行效率較高,且能直接引用計算機的各種裝置資源。它通常用於編寫系統的核心部分程式,或編寫需要耗費大量執行時間和實時性要求較高的程式段。

發展過程

彙編程式的雛型是在電子離散時序自動計算機 EDSAC上研製成功的。這種系統的特徵是使用者程式中的指令由單字母指令碼、十進位制地址和終結字母組成。第一個彙編程式是符號優化彙編程式(SOAP)系統,它是50年代中期為IBM650計算機研製的。這種計算機用磁鼓作儲存器,每條指令指出後繼指令在磁鼓中的位置。當初研製SOAP系統的動機不是引入組合語言的符號化特色,而是為了集中解決指令在磁鼓中合理分佈的問題,以提高程式的執行效率。IBM704計算機的符號彙編程式(SAP)是彙編程式發展中的一個重要里程碑。此後的彙編程式大都以這一系統為模型,其主要特徵至今未發生本質的變化。隨著計算機軟體的高速發展和廣泛應用,彙編程式又吸收了巨集加工程式、高階語言翻譯程式等系統的一些優點,相繼研製出巨集彙編程式、高階彙編程式。

分類

彙編程式分為簡單彙編程式、模組彙編程式、條件彙編程式、巨集彙編程式和高階彙編程式等。

簡單彙編程式

又稱“裝入並執行”式彙編程式。由於簡便而得到廣泛使用。這種彙編程式的特點是彙編後的機器語言程式直接放在記憶體之中準備執行。目標程式所佔據的儲存位置是在彙編時固定的,並且以後不能改變,所以這種工作方式不能將多個獨立彙編的子程式合併為一個完整的程式,而且只能呼叫位置與目標程式不衝突的程式庫中的子程式。

模組彙編程式

為適應模組程式設計方法而研製的。它除了克服簡單彙編程式的缺點之外,還提供並行設計、編碼和除錯不同程式模組的能力,而且更改程式時只更改有關的模組即可。每個彙編後的程式模組稱為目標模組,多個目標模組經連線裝配程式組合成一個完整的可執行的程式。

條件彙編程式

主要特點是具有選擇彙編某些程式段的能力。它適用於編寫選擇性較大的程式或程式包,以便根據使用者的需要和裝置的配置情況剪裁、編制適當的軟體。這種組合語言通常要引入“條件轉移”、“轉移”等彙編指示,以便根據使用者指定的彙編條件有選擇地彙編某些程式段或控制彙編程式的加工路徑。

巨集彙編程式

主要特點是在彙編程式中增加巨集加工功能。它允許使用者方便地定義和使用巨集指令,適用於程式中多處出現、具有一定格式、可以通過少數引數調節改變的程式段落的場合。採用這種方法不僅減少程式的長度,增加可讀性,而且程式段落的格式需要改變時,只須改動定義處,而不必改動每一使用處。

高階彙編程式

採用高階程式設計語言的控制語句結構的彙編程式。它不僅保持組合語言表達能力強、程式執行效率高的優點,而且能充分吸收高階語言書寫簡單和易讀的長處。這是由於高階彙編程式允許使用者使用高階程式設計語言的控制語句(如條件語句、迴圈語句、函式和過程)編寫程式中的控制部分,而且還允許使用者直接利用匯編語言直接控制儲存分配、存取暫存器硬體,描述高階語言難於表達的演算法。第一個高階彙編程式是N.沃思為IBM360系統研製的PL/360語言彙編程式,其特點是程式的控制部分採用高階語言的控制語句編寫,而資料加工部分採用IBM360彙編指令編寫。自此以後,又相繼出現了類似ALGOL的彙編程式,類似FORTRAN的彙編程式FAT。

結構與實現

由於組合語言的指令與機器語言的指令大體上保持一一對應的關係,彙編演算法採用的基本策略是簡單的。通常採用兩遍掃描源程式的演算法。第一遍掃描源程式根據符號的定義和使用,收集符號的有關資訊到符號表中;第二遍利用第一遍收集的符號資訊,將源程式中的符號化指令逐條翻譯為相應的機器指令。具體的翻譯工作可歸納為如下幾項:

(1)用機器操作碼代替符號操作;

(2)用數值地址代替符號地址;

(3)將常數翻譯為機器的內部表示;

(4)分配指令和資料所需的儲存單元。除了上述的翻譯工作外,彙編程式還要考慮:

(1)處理偽指令,收集程式中提供的彙編指示資訊,並執行相應的功能。

(2)為使用者提供資訊和源程式清單。

(3)彙編的善後處理工作,隨目標語言的型別不同而有所不同。有的直接啟動執行,有的先進行連線裝配。

(4)如果具有條件彙編、巨集彙編或高階彙編功能時,也應進行相應的翻譯處理。

假定組合語言中規定符號的應用一定出現在定義之後,則兩遍演算法可容易地合併成一遍演算法加以實現。

彙編程式的工作過程是:

(1)輸入組合語言源程式。

(2)檢查語法的正確性,如果正確,則將源程式翻譯成等價的二進位制或浮動二進位制的機器語言程式,並根據使用者的需要輸出源程式和目標程式的對照清單;如果語法有錯,則輸出錯誤資訊,指明錯誤的部位、型別和編號。

(3)最後,對已彙編出的目標程式進行善後處理。

參考書目

D. W. Barron, Assemblers and Loaders,American-Elsevier,New York,1972.