匯編語言的特點
匯編語言與機器語言的關系
計算機的程序設計語言(簡稱計算機語言)是人們用來給計算機描述操作任務的工具。
由於計算機是一種數字邏輯設備,它只能識別用二進制代碼表示的信息,所以,最初的計算機語言是直接用二進制代碼來表述的,這就是機器語言。機器語言的基本要素是機器指令(簡稱指令),每條指令用於給計算機下達一個簡單操作任務,一個復雜的解題任務需要按一定的順序執行多條指令才能完成。這種按一定順序排列起來的指令序列就是程序。
機器語言的優點是程序執行速度快、占用存儲空間小,缺點是語言難以掌握,程序調試和排錯困難,需要對計算機的硬件系統有較多的了解。
為了便於掌握和使用,人們將機器語言符號化,產生了匯編語言。匯編語言使用一些容易掌握和使用的符號來表示每條指令,使編程和調試更加方便。
例如,在8086系統中,以下機器指令代碼
0000000111011000
所描述的操作為:將0號16位寄存器中的數據與3號16位寄存器中的數據相加,其和存入0號16位寄存器。這串二進制代碼中,各部分所代表的含義如下圖(機器指令代碼分析)所示。
顯然,要熟練掌握和使用這種機器指令代碼是很困難的。而匯編語言則把一條機器指令的操作性質和操作對象分別用符號表示。如在8086系統的匯編語言中,上述指令被符號化為:
ADD AX , BX
其中,ADD代表相加操作,AX代表0號16位寄存器,BX代表3號16位寄存器。匯編
語言指令中所使用的這些符號稱為助記符,這種符號化的匯編語言指令顯然更容易掌握和使用。
由於計算機不能直接理解匯編語言的符號系統,所以,需要一個轉換工具來將用匯編語言編寫的程序轉換成機器語言程序,這個轉換工具叫作匯編程序。
匯編語言與高級語言的主要差異
計算機的程序設計語言分為低級語言和高級語言兩大類,其中,機器語言和匯編語言屬於低級語言,其余均為高級語言。語言的“高級”與“低級”之分,並不是指語言之間的優劣,而是指語言的使用是否直接涉及計算機的硬件。高級語言在使用過程中,不用(或基本上不用)直接與計算機的硬件打交道,而使用低級語言則時刻需要直接操作計算機的硬件。
例如,用匯編語言編程時,必須准確指出數據存放的地方一一某個寄存器、某個存儲單元或某個I/O端口,必須直接控制相關的設備完成數據的輸入/輸出。而用高級語言編程時,則無須關心一個數據究竟是存放在寄存器中,還是存放在內存中,而當需要輸入或輸出數據時,只要寫出一條輸入或輸出語句即可,不用直接去控制相關的輸入/輸出設備。
相對於匯編語言,高級語言更便於描述復雜的程序控制結構及處理功能,更接近人們的語言習慣,並且基本上不直接涉及計算機硬件概念,所以更容易掌握和使用。但用任何一種高級語言編寫的程序,都必須轉換成機器語言程序才能被計算機執行。完成這種轉換任務的工具叫作編譯程序,每種高級語言都要配備自己的編譯程序。
直接用匯編語言編程雖然困難一些,但編出的程序時、空效率高(即運行速度快,占用存儲空間少):而用高級語言編寫的程序由編譯程序轉換為機器代碼后,並不是最優化的執行代碼,其時、空效率要低得多。此外,在需要直接控制計算機硬件的應用場合,匯編語言比高級語言更靈活、方便,甚至是非用匯編語言不可的。
因此,匯編語言與高級語言各有其應用場合,學習和掌握匯編語言程序設計方法,是提高計算機應用能力的重要基礎。
值得指出的是,低級語言是與計算機硬件系統的功能設計、組成結構密切相關的,因此,不同系列的計算機,其低級語言是不兼容的。盡管如此,其匯編語言的基本特點及程序設計的基本方法是相通的。