彙編程式

彙編程式

彙編程式是指把彙編語言書寫的程式翻譯成與之等價的機器語言程式的翻譯程式,是為特定計算機或計算機系列設計的一種面向機器的語言,由彙編執行指令和彙編偽指令組成。彙編程式輸入的是用彙編語言書寫的源程式,輸出的是用機器語言表示的目標程式。採用彙編語言編寫程式雖不如高級程式設計語言簡便、直觀,但是彙編出的目標程式占用記憶體較少、運行效率較高,且能直接引用計算機的各種設備資源。它通常用於編寫系統的核心部分程式,或編寫需要耗費大量運行時間和實時性要求較高的程式段。彙編程式主要有簡單彙編程式、模組彙編程式、條件彙編程式、宏彙編程式、高級彙編程式幾種。

正文

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

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

分類彙編程式分為簡單彙編程式、模組彙編程式、條件彙編程式、宏彙編程式和高級彙編程式等。

簡單彙編程式

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

模組彙編程式

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

條件彙編程式

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

宏彙編程式

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

高級彙編程式

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

結構與實現由於彙編語言的指令與機器語言的指令大體上保持一一對應的關係,彙編算法採用的基本策略是簡單的。通常採用兩遍掃描源程式的算法。第一遍掃描源程式根據符號的定義和使用,收集符號的有關信息到符號表中;第二遍利用第一遍收集的符號信息,將源程式中的符號化指令逐條翻譯為相應的機器指令。具體的翻譯工作可歸納為如下幾項:①用機器操作碼代替符號操作;②用數值地址代替符號地址;③將常數翻譯為機器的內部表示;④分配指令和數據所需的存儲單元。除了上述的翻譯工作外,彙編程式還要考慮:①處理偽指令,收集程式中提供的彙編指示信息,並執行相應的功能。②為用戶提供信息和源程式清單。③彙編的善後處理工作,隨目標語言的類型不同而有所不同。有的直接啟動執行,有的先進行連線裝配。④如果具有條件彙編、宏彙編或高級彙編功能時,也應進行相應的翻譯處理。

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

彙編程式的工作過程是:①輸入彙編語言源程式。②檢查語法的正確性,如果正確,則將源程式翻譯成等價的二進制或浮動二進制的機器語言程式,並根據用戶的需要輸出源程式和目標程式的對照清單;如果語法有錯,則輸出錯誤信息,指明錯誤的部位、類型和編號。③最後,對已彙編出的目標程式進行善後處理。

相關詞條

相關搜尋

熱門詞條

聯絡我們