首頁考試吧論壇Exam8視線考試商城網(wǎng)絡(luò)課程模擬考試考友錄實用文檔求職招聘論文下載
2013中考
法律碩士
2013高考
MBA考試
2013考研
MPA考試
在職研
中科院
考研培訓(xùn) 自學(xué)考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務(wù)英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托?荚
托業(yè)考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報 關(guān) 員
外 銷 員
價格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢
營 銷 師
司法考試
國際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會計從業(yè)資格
基金從業(yè)資格
統(tǒng)計從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計師
會計職稱
法律顧問
ACCA考試
注冊會計師
資產(chǎn)評估師
審計師考試
高級會計師
注冊稅務(wù)師
國際內(nèi)審師
理財規(guī)劃師
美國注冊會計師
一級建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價師
二級建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
造價員考試
注冊計量師
環(huán)保工程師
化工工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
監(jiān)理工程師
房地產(chǎn)估價
土地估價師
安全評價師
房地產(chǎn)經(jīng)紀(jì)人
投資項目管理師
環(huán)境影響評價師
土地登記代理人
繽紛校園 實用文檔 英語學(xué)習(xí) 作文大全 求職招聘 論文下載 訪談|游戲
軟件水平考試
軟件水平考試資訊
軟件水平考試試題
軟件水平考試專項輔導(dǎo)
軟件水平考試交流互動
軟件水平考試交流互動
您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 復(fù)習(xí)資料 > 系統(tǒng)分析師 > 正文

2012年軟考系統(tǒng)分析師經(jīng)典教程:匯編語言

  2.2 匯編語言:

  匯編語言是一種功能很強(qiáng)的程序設(shè)計語言,也是利用計算機(jī)所有硬件特性并能直接控制硬件的語言。匯編語言,作為一門語匯編語言言,對應(yīng)于高級語言的編譯器,需要一個“匯編器”來把匯編語言原文件匯編成機(jī)器可執(zhí)行的代碼。高級的匯編器如MASM,TASM等等為我們寫匯編程序提供了很多類似于高級語言的特征,比如結(jié)構(gòu)化、抽象等。在這樣的環(huán)境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經(jīng)類同于高級語言,F(xiàn)在的匯編環(huán)境已經(jīng)如此高級,即使全部用匯編語言來編寫windows的應(yīng)用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在于編寫高效且需要對機(jī)器硬件精確控制的程序。

  匯編語言是為特定的計算機(jī)或者計算機(jī)系統(tǒng)設(shè)計的面向機(jī)器的語言。

  匯編語言中的語句可以分成兩大類:

  ● 與機(jī)器指令相對應(yīng)的可執(zhí)行匯編語句;

  ● 匯編控制語句,即偽指令。

  偽指令并不翻譯成機(jī)器指令,它的作用是控制匯編程序工作。

  每條匯編語句被劃分成4個區(qū),依次是標(biāo)號區(qū)、操作碼區(qū)、操作數(shù)區(qū)和注解區(qū)。

  例如:[標(biāo)號] [操作碼] [操作數(shù)] [注解]

  用匯編語言編寫的源程序,要通過匯編程序?qū)⑺g成機(jī)器語言程序,才能被計算機(jī)執(zhí)行。因此,匯編程序的功能就是將匯編語言所編寫的源程序翻譯成由機(jī)器指令和其他信息組成的目標(biāo)程序。它的基本工作包括:

  ● 將每一條可執(zhí)行匯編語句轉(zhuǎn)換成對應(yīng)的機(jī)器指令;

  ● 處理源程序中出現(xiàn)的偽指令。

  整個匯編程序工作通常要對源程序進(jìn)行兩次掃描才能完成。第一次掃描主要工作是定義符號的值。第二次掃描的目的則是產(chǎn)生目標(biāo)程序。其中,可執(zhí)行匯編語句被翻譯成對應(yīng)的二進(jìn)制代碼機(jī)器指令,而偽指令會根據(jù)偽指令記憶碼調(diào)用偽指令表對應(yīng)元素所規(guī)定的子程序入口。

  大多數(shù)情況下Linux程序員不需要使用匯編語言,因為即便是硬件驅(qū)動這樣的底層程序在Linux操作系統(tǒng)中也可以完全用C語言來實現(xiàn),再加上GCC這一優(yōu)秀的編譯器目前已經(jīng)能夠?qū)ψ罱K生成的代碼進(jìn)行很好的優(yōu)化,的確有足夠的理由讓我們可以暫時將匯編語言拋在一邊了。但實際情況是Linux程序員有時還是需要使用匯編,或者不得不使用匯編,理由很簡單:精簡、高效和libc無關(guān)性。假設(shè)要移植Linux到某一特定的嵌入式硬件環(huán)境下,首先必然面臨如何減少系統(tǒng)大小、提高執(zhí)行效率等問題,此時或許只有匯編語言能幫上忙了。

  優(yōu)點

  匯編語言直接同計算機(jī)的底層軟件甚至硬件進(jìn)行交互,它具有如下一些優(yōu)點:

  (1)能夠直接訪問與硬件相關(guān)的存儲器或I/O端口;

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

  (3)能夠?qū)﹃P(guān)鍵代碼進(jìn)行更準(zhǔn)確的控制,避免因線程共同訪問或者硬件設(shè)備共享引起的死鎖;

  (4)能夠根據(jù)特定的應(yīng)用對代碼做最佳的優(yōu)化,提高運(yùn)行速度;

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

  缺點

  同時還應(yīng)該認(rèn)識到,匯編語言是一種層次非常低的語言,它僅僅高于直接手工編寫二進(jìn)制的機(jī)器指令碼,因此不可避免地存在一些缺點:

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

  (2)很容易產(chǎn)生bug,難于調(diào)試;

  (3)只能針對特定的體系結(jié)構(gòu)和處理器進(jìn)行優(yōu)化;

  (4)開發(fā)效率很低,時間長且單調(diào)。

  特點

  匯編語言比機(jī)器語言易于讀寫、調(diào)試和修改,同時具有機(jī)器語言全部優(yōu)點。但在編寫復(fù)雜程序時,相對高級語言代碼量較大,而且匯編語言依賴于具體的處理器體系結(jié)構(gòu),不能通用,因此不能直接在不同處理器體系結(jié)構(gòu)之間移植。匯編語言的特點:

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

  2.保持了機(jī)器語言的優(yōu)點,具有直接和簡捷的特點。

  3.可有效地訪問、控制計算機(jī)的各種硬件設(shè)備,如磁盤、存儲器、CPU、I/O端口等。

  4.目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計語言。

  5.經(jīng)常與高級語言配合使用,應(yīng)用十分廣泛。

  對于不同型號的計算機(jī),有著不同的結(jié)構(gòu)的匯編語言。

  匯編語言由于采用了助記符號來編寫程序,比用機(jī)器語言的二進(jìn)制代碼編程要方便些,在一定程度上簡化了編程過程。匯編語言的特點是用符號代替了機(jī)器指令代碼,而且助記符與指令代碼一一對應(yīng),基本保留了機(jī)器語言的靈活性。使用匯編語言能面向機(jī)器并較好地發(fā)揮機(jī)器的特性,得到質(zhì)量較高的程序。

  匯編語言是面向具體機(jī)型的,它離不開具體計算機(jī)的指令系統(tǒng),因此,對于不同型號的計算機(jī),有著不同的結(jié)構(gòu)的匯編語言,而且,對于同一問題所編制的匯編語言程序在不同種類的計算機(jī)間是互不相通的。

  匯編語言中由于使用了助記符號,用匯編語言編制的程序輸入計算機(jī),計算機(jī)不能象用機(jī)器語言編寫的程序一樣直接識別和執(zhí)行,必須通過預(yù)先放入計算機(jī)的“匯編程序”中進(jìn)行加工和翻譯,才能變成能夠被計算機(jī)直接識別和處理的二進(jìn)制代碼程序。用匯編語言等非機(jī)器語言書寫好的符號程序稱為源程序,運(yùn)行時匯編程序要將源程序翻譯成目標(biāo)程序。目標(biāo)程序是機(jī)器語言程序,當(dāng)它被安置在內(nèi)存的預(yù)定位置上,就能被計算機(jī)的CPU處理和執(zhí)行。

  匯編語言像機(jī)器指令一樣,是硬件操作的控制信息,因而仍然是面向機(jī)器的語言,使用起來還是比較繁瑣費時,通用性也差。但是,匯編語言用來編制系統(tǒng)軟件和過程控制軟件,其目標(biāo)程序占用內(nèi)存空間少,運(yùn)行速度快,有著高級語言不可替代的用途。

  應(yīng)用

  匯編語言作為最基本的編程語言之一,匯編語言雖然應(yīng)用的范圍不算很廣,但重要性卻勿庸置疑,因為它能夠完成許多其它匯編語言程序設(shè)計語言所無法完成的功能。就拿Linux內(nèi)核來講,雖然絕大部分代碼是用C語言編寫的,但仍然不可避免地在某些關(guān)鍵地方使用了匯編代碼,其中主要是在Linux的啟動部分。由于這部分代碼與硬件的關(guān)系非常密切,即使是C語言也會有些力不從心,而匯編語言則能夠很好揚(yáng)長避短,最大限度地發(fā)揮硬件的性能。

  1.70%以上的系統(tǒng)軟件是用匯編語言編寫的。

  2.某些快速處理、位處理、訪問硬件設(shè)備等高效程序是用匯編語言編寫的。

  3.某些高級繪圖程序、視頻游戲程序是用匯編語言編寫的。

  匯編語言是理解整個計算機(jī)系統(tǒng)的最佳起點和最有效途徑,人們經(jīng)常認(rèn)為匯編語言的應(yīng)用范圍很小,而忽視它的重要性。其實匯編語言對每一個希望學(xué)習(xí)計算機(jī)科學(xué)與技術(shù)的人來說都是非常重要的,是不能不學(xué)習(xí)的語言。所有可編程計算機(jī)都向人們提供機(jī)器指令,通過機(jī)器指令人們能夠使用機(jī)器的邏輯功能。所有程序,不論用何種語言編制,都必須轉(zhuǎn)成機(jī)器指令,運(yùn)用機(jī)器的邏輯功能,其功能才能得以實現(xiàn)。機(jī)器的邏輯功能,軟件系統(tǒng)功能構(gòu)筑其上,硬件系統(tǒng)功能運(yùn)行于下。匯編語言直接描述機(jī)器指令,比機(jī)器指令容易記憶和理解。通過學(xué)習(xí)和使用匯編語言,能夠感知、體會、理解機(jī)器的邏輯功能,向上為理解各種軟件系統(tǒng)的原理,打下技術(shù)理論基礎(chǔ);向下為掌握硬件系統(tǒng)的原理,打下實踐應(yīng)用基礎(chǔ)。學(xué)習(xí)匯編語言,向上可以理解軟件,向下能夠感知硬件,是我們理解整個計算機(jī)系統(tǒng)的最佳起點。

1 2  下一頁

  相關(guān)推薦:

  2012年軟考系統(tǒng)分析師考試60天完美復(fù)習(xí)計劃

  2012年軟件水平考試網(wǎng)絡(luò)工程師章節(jié)筆記講義匯總

  2012年上半年軟件水平考試成績查詢匯總

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。