複製鏈接
請複製以下鏈接發送給好友

彙編程序

鎖定
彙編程序是指把彙編語言書寫的程序翻譯成與之等價的機器語言程序的翻譯程序。彙編程序輸入的是用匯編語言書寫的源程序,輸出的是用機器語言表示的目標程序。彙編語言是為特定計算機或計算機系列設計的一種面向機器的語言,由彙編執行指令和彙編偽指令組成。採用彙編語言編寫程序雖不如高級程序設計語言簡便、直觀,但是彙編出的目標程序佔用內存較少、運行效率較高,且能直接引用計算機的各種設備資源。它通常用於編寫系統的核心部分程序,或編寫需要耗費大量運行時間和實時性要求較高的程序段
中文名
彙編程序
外文名
assembler
漢語拼音
huì biān chéng xù
學    科
計算機

彙編程序背景信息

彙編執行指令是機器指令的符號化表示,其操作碼用記憶符表示,地址碼直接用標號、變量名字、常數等表示。彙編執行指令經彙編程序翻譯為機器指令,二者之間基本上保持一一對應的關係。彙編偽指令又稱作彙編指示,用於向彙編程序提供用户自定義的符號、數據的類型、數據空間的長度,以及目標程序的格式、存放位置等提示性信息,其作用是指示彙編程序如何進行彙編。使用匯編語言編寫的源代碼,需要通過使用相應的彙編程序將它們轉換成可執行的機器代碼。這一過程被稱為彙編過程。
許多彙編程序可以識別代表地址和常量的標籤(label)和符號(symbols),這樣就可以用字符來代表操作數而無需採取寫死的方式。普遍地説,特定的彙編語言和特定的機器語言指令集是一一對應的。
許多彙編程序為程序開發、彙編控制、輔助調試提供了額外的支持機制。有的彙編語言編程工具經常會提供宏,它們也被稱為宏彙編器。
彙編語言不像其他大多數的程序設計語言一樣被廣泛用於程序設計;在實際應用中,它通常被應用在底層硬件操作和高要求的程序優化的場合。驅動程序、嵌入式操作系統和實時運行程序都需要彙編語言 [1] 

彙編程序發展過程

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

彙編程序分類

彙編程序簡單彙編程序

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

彙編程序模塊彙編程序

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

彙編程序條件彙編程序

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

彙編程序宏彙編程序

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

彙編程序高級彙編程序

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

彙編程序結構與實現

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

彙編程序工作過程

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

彙編程序彙編語言

CPU 只負責計算,本身不具備智能。你輸入一條指令(instruction),它就運行一次,然後停下來,等待下一條指令。
這些指令都是二進制的,稱為操作碼(opcode),比如加法指令就是00000011。編譯器的作用,就是將高級語言寫好的程序,翻譯成一條條操作碼。
對於人類來説,二進制程序是不可讀的,根本看不出來機器幹了什麼。為了解決可讀性的問題,以及偶爾的編輯需求,就誕生了彙編語言。
彙編語言是二進制指令的文本形式,與指令是一一對應的關係。比如,加法指令00000011寫成彙編語言就是 ADD。只要還原成二進制,彙編語言就可以被 CPU 直接執行,所以它是最底層的低級語言 [1] 
參考資料
  • 1.    李兆鵬 陳意雲 葛 琳 華保健. 一種彙編程序的形式驗證框架[J]. 計算機研究與發展, 2008, 45(5):825-833.
  • 2.    王學東, 汪文勇. 彙編程序覆蓋測試中虛擬插樁的實現[J]. 計算機工程, 2007, 33(7):87-88.
  • 3.    中國大百科全書出版社編輯部,中國大百科全書總編輯委員會《電子學與計算機》編輯委員會編.中國大百科全書 電子學與計算機 1:中國大百科全書出版社,1992.04:394