標籤: 暫無標籤

彙編語言的英語是Assembly language,台灣、港澳稱之為組合語言,彙編語言是一種與硬體緊密相關的程序設計低級語言,彙編語言是機器語言便於記憶和理解的符號形式(又稱為助記符)。

1 彙編語言 -簡介

彙編語言彙編語言

彙編語言(AssemblyLanguage)是面向機器的程序設計語言。彙編語言是一種功能很強的程序設計語言,也是利用計算機所有硬體特性並能直接控制硬體的語言。彙編語言,作為一門語言,對應於高級語言的編譯器,需要一個「彙編器」來把彙編語言原文件彙編成機器可執行的代碼。高級的彙編器如MASM,TASM等等為我們寫彙編程序提供了很多類似於高級語言的特徵,比如結構化、抽象等。在這樣的環境中編寫的彙編程序,有很大一部分是面向彙編器的偽指令,已經類同於高級語言。現在的彙編環境已經如此高級,即使全部用彙編語言來編寫windows的應用程序也是可行的,但這不是彙編語言的長處。彙編語言的長處在於編寫高效且需要對機器硬體精確控制的程序。

2 彙編語言 -簡述

彙編語言彙編語言
符號語言

在彙編語言中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標號(Label)代替地址碼。這樣用符號代替機器語言的二進位碼,就把機器語言變成了彙編語言。因此彙編語言亦稱為符號語言。

彙編

使用彙編語言編寫的程序,機器不能直接識別,要由一種程序將彙編語言翻譯成機器語言,這種起翻譯作用的程序叫彙編程序,彙編程序是系統軟體中語言處理系統軟體。彙編語言編譯器把彙編程序翻譯成機器語言的過程稱為彙編。

不能通用

彙編語言比機器語言易於讀寫、調試和修改,同時具有機器語言全部優點。但在編寫複雜程序時,相對高級語言代碼量較大,而且彙編語言依賴於具體的處理器體系結構,不能通用,因此不能直接在不同處理器體系結構之間移植。

3 彙編語言 -特點

1.面向機器的低級語言,通常是為特定的計算機或系列計算機專門設計的。

2.保持了機器語言的優點,具有直接和簡捷的特點。

3.可有效地訪問、控制計算機的各種硬體設備,如磁碟、存儲器、CPU、I/O埠等。

4.目標代碼簡短,佔用內存少,執行速度快,是高效的程序設計語言。

5.經常與高級語言配合使用,應用十分廣泛。

6.對於不同型號的計算機,有著不同的結構的彙編語言。

7.彙編語言由於採用了助記符號來編寫程序,比用機器語言的二進位代碼編程要方便些,在一定程度上簡化了編程過程。

8.彙編語言的特點是用符號代替了機器指令代碼,而且助記符與指令代碼一一對應,基本保留了機器語言的靈活性。使用彙編語言能面向機器並較好地發揮機器的特性,得到質量較高的程序。

9.彙編語言是面向具體機型的,它離不開具體計算機的指令系統,因此,對於不同型號的計算機,有著不同的結構的彙編語言,而且,對於同一問題所編製的彙編語言程序在不同種類的計算機間是互不相通的。

10.彙編語言中由於使用了助記符號,用彙編語言編製的程序輸入計算機,計算機不能象用機器語言編寫的程序一樣直接識別和執行,必須通過預先放入計算機的"彙編程序"中進行加工和翻譯,才能變成能夠被計算機直接識別和處理的二進位代碼程序。

11.用彙編語言等非機器語言書寫好的符號程序稱為源程序,運行時彙編程序要將源程序翻譯成目標程序。目標程序是機器語言程序,當它被安置在內存的預定位置上,就能被計算機的CPU處理和執行。

4 彙編語言 -優點與缺點

優點

彙編語言直接同計算機的底層軟體甚至硬體進行交互,它具有如下一些優點:

(1)能夠直接訪問與硬體相關的存儲器或I/O埠;

(2)能夠不受編譯器的限制,對生成的二進位代碼進行完全的控制;

(3)能夠對關鍵代碼進行更準確的控制,避免因線程共同訪問或者硬體設備共享引起的死鎖;

(4)能夠根據特定的應用對代碼做最佳的優化,提高運行速度;

(5)能夠最大限度地發揮硬體的功能。

(6)彙編語言用來編製系統軟體和過程式控制制軟體,其目標程序佔用內存空間少,運行速度快,有著高級語言不可替代的用途。

缺點

同時還應該認識到,彙編語言是一種層次非常低的語言,它僅僅高於直接手工編寫二進位的機器指令碼,因此不可避免地存在一些缺點:

(1)編寫的代碼非常難懂,不好維護;

(2)很容易產生bug,難於調試;

(3)只能針對特定的體系結構和處理器進行優化;

(4)開發效率很低,時間長且單調。

(5)彙編語言像機器指令一樣,是硬體操作的控制信息,因而仍然是面向機器的語言,使用起來還是比較繁瑣費時,通用性也差。

5 彙編語言 -應用

編寫

70%以上的系統軟體是用彙編語言編寫的。某些快速處理、位處理、訪問硬體設備等高效程序是用彙編語言編寫的。某些高級繪圖程序、視頻遊戲程序是用彙編語言編寫的。

最有效途徑

彙編語言是我們理解整個計算機系統的最佳起點和最有效途徑。人們經常認為彙編語言的應用範圍很小,而忽視它的重要性。其實彙編語言對每一個希望學習計算機科學與技術的人來說都是非常重要的,是不能不學習的語言。所有可編程計算機都向人們提供機器指令,通過機器指令人們能夠使用機器的邏輯功能。所有程序,不論用何種語言編製,都必須轉成機器指令,運用機器的邏輯功能,其功能才能得以實現。機器的邏輯功能,軟體系統功能構築其上,硬體系統功能運行於下。彙編語言直接描述機器指令,比機器指令容易記憶和理解。通過學習和使用彙編語言,能夠感知、體會、理解機器的邏輯功能,向上為理解各種軟體系統的原理,打下技術理論基礎;向下為掌握硬體系統的原理,打下實踐應用基礎。學習彙編語言,向上可以理解軟體,向下能夠感知硬體,是我們理解整個計算機系統的最佳起點和最有效途徑。

6 彙編語言 -Linux 彙編語言

彙編代碼

作為最基本的編程語言之一,彙編語言雖然應用的範圍不算很廣,但重要性卻勿庸置疑,因為它能夠完成許多其它語言所無法完成的功能。就拿 Linux 內核來講,雖然絕大部分代碼是用 C 語言編寫的,但仍然不可避免地在某些關鍵地方使用了彙編代碼,其中主要是在 Linux 的啟動部分。由於這部分代碼與硬體的關係非常密切,即使是 C 語言也會有些力不從心,而彙編語言則能夠很好揚長避短,最大限度地發揮硬體的性能。

Linux 程序員

大多數情況下 Linux 程序員不需要使用彙編語言,因為即便是硬體驅動這樣的底層程序在 Linux 操作系統中也可以用完全用 C 語言來實現,再加上 GCC 這一優秀的編譯器目前已經能夠對最終生成的代碼進行很好的優化,的確有足夠的理由讓我們可以暫時將彙編語言拋在一邊了。但實現情況是 Linux 程序員有時還是需要使用彙編,或者不得不使用彙編,理由很簡單:精簡、高效和 libc 無關性。假設要移植 Linux 到某一特定的嵌入式硬體環境下,首先必然面臨如何減少系統大小、提高執行效率等問題,此時或許只有彙編語言能幫上忙了。

優點

彙編語言直接同計算機的底層軟體甚至硬體進行交互,它具有如下一些優點: 
•能夠直接訪問與硬體相關的存儲器或 I/O 埠; 
•能夠不受編譯器的限制,對生成的二進位代碼進行完全的控制; 
•能夠對關鍵代碼進行更準確的控制,避免因線程共同訪問或者硬體設備共享引起的死鎖; 
•能夠根據特定的應用對代碼做最佳的優化,提高運行速度; 
•能夠最大限度地發揮硬體的功能。

缺點

同時還應該認識到,彙編語言是一種層次非常低的語言,它僅僅高於直接手工編寫二進位的機器指令碼,因此不可避免地存在一些缺點: 
•編寫的代碼非常難懂,不好維護; 
•很容易產生 bug,難於調試; 
•只能針對特定的體系結構和處理器進行優化; 
•開發效率很低,時間長且單調。

兩種不同的形式

Linux 下用彙編語言編寫的代碼具有兩種不同的形式。第一種是完全的彙編代碼,指的是整個程序全部用彙編語言編寫。儘管是完全的彙編代碼,Linux 平台下的彙編工具也吸收了 C 語言的長處,使得程序員可以使用 #include、#ifdef 等預處理指令,並能夠通過宏定義來簡化代碼。第二種是內嵌的彙編代碼,指的是可以嵌入到C語言程序中的彙編代碼片段。雖然 ANSI 的 C 語言標準中沒有關於內嵌彙編代碼的相應規定,但各種實際使用的 C 編譯器都做了這方面的擴充,這其中當然就包括 Linux 平台下的 GCC。

7 彙編語言 -應用舉例

用彙編語言實現RESET啟動和熱啟動

程序名: RESET.ASM/BOOT.ASM 程序類別: 完整的彙編語言程序

功能: 用程序完成RESET啟動和熱啟動

使用說明: 彙編連接以後轉換為com文件運行

程序說明:

在日常用機過程中,如果出現了異常情況常常需要重新啟動系統 .對於IBM PC 以及其兼容機,除了開機冷啟動外,還有熱啟動和R ESET開關複位啟動,他們的共同特點是轉入BIOS的入口點(即ROM 的起始單元FFFF:0處),執行該處的跳轉指令,轉向啟動程序,該啟 動程序在執行過程中需檢測複位標誌字(在地址0040:0072處,佔2 個位元組)的值,若為1234則啟動是不檢測內存;若非1234則啟動先檢 測內存,再啟動系統.熱啟動和RESET啟動的不同之處在於熱啟動時 不檢測內存,而RESET啟動是需要檢測內存.

下面的倆個程序分別實現RESET啟動和熱啟動.經過彙編,連接再轉 換成文件后才能運行.

RESET.ASM (RESET開關複位啟動程序)

RESET.ASM (RESET開關複位啟動程序)RESET.ASM (RESET開關複位啟動程序)

 

 

 

 

BOOT.ASM (熱啟動程序)

BOOT.ASM (熱啟動程序)BOOT.ASM (熱啟動程序)

  


8 彙編語言 -視頻教程

 

上一篇[指令系統]    下一篇 [安迪·魯賓]

相關評論

同義詞:暫無同義詞