匯編語言
1.什么是匯編語言[1]
匯編語言是指能反映指令功能的助記符表達(dá)的計算機(jī)語言,它是符號化的機(jī)器語言。用匯編語言寫出的程序是匯編語言源程序,機(jī)器無法執(zhí)行。必須用計算機(jī)配置好的匯編程序把它翻譯成機(jī)器語言目標(biāo)程序,機(jī)器才能執(zhí)行。這個翻譯過程就是匯編過程。匯編語言比機(jī)器語言在編寫、修改、閱讀方面均有很大改進(jìn),運(yùn)行速度也快,但掌握起來比較困難。
2.匯編語言的特點(diǎn)[2]
匯編語言采用了助記符來編寫程序,比用機(jī)器語言的二進(jìn)制代碼編程要方便些,在一定程度上簡化了編程過程。匯編語言的特點(diǎn)是用符號代替了機(jī)器指令代碼,而且助記符與指令代碼一一對應(yīng),基本保留了機(jī)器語言的靈活性。使用匯編語言能面向機(jī)器并較好地發(fā)揮機(jī)器的特性,得到質(zhì)量較高的程序。
匯編語言是面向具體機(jī)型的,它離不開具體計算機(jī)的指令系統(tǒng),因此,對于不同型號的計算機(jī)有著不同結(jié)構(gòu)的匯編語言,而且,對于同一問題所編制的匯編語言程序在不同機(jī)型類別的計算機(jī)間是互不相通的。
匯編語言中使用了助記符號,對于用匯編語言編制的程序,計算機(jī)不能像用機(jī)器語言編寫的程序一樣直接識別和執(zhí)行,必須經(jīng)過預(yù)先放人計算機(jī)的“匯編程序”的加工和翻譯才能變成能夠被計算機(jī)識別和處理的二進(jìn)制代碼程序。用匯編語言等非機(jī)器語言書寫的符號程序稱為源程序,運(yùn)行時匯編程序要將源程序翻譯成目標(biāo)程序。目標(biāo)程序是機(jī)器語言程序.它被安置在內(nèi)存的預(yù)定位置上后,就能被計算機(jī)的CPU處理和執(zhí)行。
匯編語言像機(jī)器指令一樣,是硬件操作的控制信息,因而仍然是面向機(jī)器的語言,使用起來還是比較繁瑣費(fèi)時,通用性也差。但是,匯編語言用來編制系統(tǒng)軟件和過程控制軟件,其目標(biāo)程序占用內(nèi)存空間少,運(yùn)行速度快,有著高級語言不可替代的用途。
匯編語言指令能夠直接控制硬件,例如訪問I/O端口;而高級語言不提供對于硬件的控制。高級語言程序的效率取決于編譯器翻譯高級語言程序的方式,由于編譯器必須可以翻譯所有可能的高級語言代碼,因此在某些情況下編譯器翻譯出的機(jī)器語言可能不是最有效的機(jī)器語言。而匯編語言指令和機(jī)器語言指令是一一對應(yīng)的,因此使用匯編語言可以確保代碼的高效性。編寫一個完整程序可能不能體現(xiàn)匯編語言高效率的優(yōu)勢。若僅編寫部分程序,在執(zhí)行時常??梢垣@取較高的效率。在多數(shù)情況下,匯編語言程序員編寫匯編語言程序不是為了實(shí)現(xiàn)一個完整的系統(tǒng)或者是一個程序,而僅僅是編寫選定的模塊。例如,可以通過寫出口例程(exit routine)用戶化應(yīng)用程序或操作系統(tǒng)。為了保證與宿主語言程序能正常接口,常常需要用匯編語言編寫這樣的出口例程。
3.匯編語言的優(yōu)缺點(diǎn)[3]
一、匯編語言的優(yōu)點(diǎn)
匯編語言的語句與機(jī)器語言的指令是一一對應(yīng)的,因此它具有機(jī)器語言的一些特點(diǎn),其優(yōu)點(diǎn)如下。
(1)易于理解與記憶。
(2)能利用機(jī)器指令精確地描述算法,編程質(zhì)量高。
(3)所占存儲空間小。
(4)執(zhí)行速度較快。
二、匯編語言的缺點(diǎn)
(1)與機(jī)器語言一樣,程序通用性差。每一種匯編語言都是為某種特定類型的計算機(jī)專門設(shè)計的,不同類型計算機(jī)的匯編語言不能通用。
(2)匯編語言與機(jī)器語言一樣都依賴于機(jī)器,與計算機(jī)硬件直接相關(guān),也是面向機(jī)器的語言。
4.匯編語言的應(yīng)用[2]
匯編語言作為最基本的編程語言之一,雖然它的應(yīng)用范圍不算很廣,但重要性卻毋庸置疑,因?yàn)樗軌蛲瓿稍S多其他語言所無法完成的功能。例如Linux內(nèi)核的絕大部分代碼是用C語言編寫的,但仍然不可避免地在某些關(guān)鍵地方使用了匯編代碼,其中主要是在Linux的啟動部分。由于這部分代碼與硬件的關(guān)系非常密切,即使是C語言也會有些力不從心,而匯編語言則能夠很好地?fù)P長避短,最大限度地發(fā)揮硬件的性能。70%以上的系統(tǒng)軟件是用匯編語言編寫的。某些快速處理、位處理、訪問硬件設(shè)備等高效程序是用匯編語言編寫的。某些高級繪圖程序、視頻游戲程序也是用匯編語言編寫的。
匯編語言是理解整個計算機(jī)系統(tǒng)的最佳起點(diǎn)和最有效途徑.人們經(jīng)常認(rèn)為匯編語言的應(yīng)用范圍很小,而忽視它的重要性。其實(shí)匯編語言對每一個希望學(xué)習(xí)計算機(jī)科學(xué)與技術(shù)的人來說都是非常重要的,是不能不學(xué)習(xí)的語言。所有可編程計算機(jī)都向人們提供機(jī)器指令,通過機(jī)器指令人們能夠使用機(jī)器的邏輯功能。所有程序,不論用何種語言編制,都必須轉(zhuǎn)成機(jī)器指令,運(yùn)用機(jī)器的邏輯功能,其功能才能得以實(shí)現(xiàn)。機(jī)器的邏輯功能、軟件系統(tǒng)功能構(gòu)筑其上,硬件系統(tǒng)功能運(yùn)行于下。匯編語言直接描述機(jī)器指令,比機(jī)器指令容易記憶和理解。通過學(xué)習(xí)和使用匯編語言,能夠感知、體會、理解機(jī)器的邏輯功能,向上為理解各種軟件系統(tǒng)的原理打下技術(shù)理論基礎(chǔ);向下為掌握硬件系統(tǒng)的原理打下實(shí)踐應(yīng)用基礎(chǔ)。學(xué)習(xí)匯編語言向上可以理解軟件,向下能夠感知硬件,是理解整個計算機(jī)系統(tǒng)的最佳起點(diǎn)。