匯編語言課程論文_第1頁(yè)
匯編語言課程論文_第2頁(yè)
匯編語言課程論文_第3頁(yè)
匯編語言課程論文_第4頁(yè)
匯編語言課程論文_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 匯編語言程序設(shè)計(jì)摘要匯編語言是面向機(jī)器的程序設(shè)計(jì)語言。在匯編語合中,用助記符代替操作碼,用地址符號(hào)或標(biāo)號(hào)代替地址碼。這樣用指令的助記符、符號(hào)地址、標(biāo)號(hào)、偽指令等符號(hào)代替機(jī)器語言的二進(jìn)制碼,就把機(jī)器語言變成了匯編語言。于是匯編語言亦稱為符號(hào)語言。使用匯編語言編寫的程序,機(jī)器不能直接識(shí)別,要由一種程序?qū)R編語言翻譯成機(jī)器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統(tǒng)軟件中語言處理系統(tǒng)軟件。匯編程序把匯編語言翻譯成機(jī)器上能執(zhí)行的機(jī)器語言的過程稱為匯編。關(guān)鍵詞:匯編語言、程序設(shè)計(jì)、指令系統(tǒng) 目錄第1章 匯編語言概況1第2章 匯編語言的基本元素12.1 匯編語言的語句格式12.2 匯編語言的運(yùn)算

2、符12.3表達(dá)式22.4 匯編語言程序匯編步驟4第3章 偽指令53.1 定義數(shù)據(jù)偽指令53.2 符號(hào)定義偽指令equ、=、及purge53.3段定義偽指令segment和ends53.4 設(shè)定段寄存器偽指令assume63.5定義過程的偽指令proc和endp63.6 宏指令63.7 org 偽指令63.8 匯編結(jié)束偽指令end6第4章 匯編程序設(shè)計(jì)74.1 簡(jiǎn)單程序設(shè)計(jì)74.2分支程序設(shè)計(jì)74.3循環(huán)程序設(shè)計(jì)74.4 子程序設(shè)計(jì)7第5章 匯編語言的優(yōu)點(diǎn)與缺點(diǎn)8第6章 匯編語言的特點(diǎn)8第7章 匯編語言的應(yīng)用9總結(jié)10參考文獻(xiàn)11致謝詞11第1章 匯編語言概況匯編語言是一種功能很強(qiáng)的程序設(shè)計(jì)語言

3、,也是利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的語言。匯編語言,作為一門語言,對(duì)應(yīng)于高級(jí)語言的編譯器,需要一個(gè)“匯編器”來把匯編語言原文件匯編成機(jī)器可執(zhí)行的代碼。高級(jí)的匯編器如masm,tasm等等為我們寫匯編程序提供了很多類似于高級(jí)語言的特征,比如結(jié)構(gòu)化、抽象等。在這樣的環(huán)境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經(jīng)類同于高級(jí)語言。現(xiàn)在的匯編環(huán)境已經(jīng)如此高級(jí),即使全部用匯編語言來編寫windows的應(yīng)用程序也是可行的,但這不是匯編語言的長(zhǎng)處。匯編語言的長(zhǎng)處在于編寫高效且需要對(duì)機(jī)器硬件精確控制的程序。 大多數(shù)情況下linux程序員不需要使用匯編語言,因?yàn)榧幢闶怯布?qū)動(dòng)這樣的底層程序

4、在linux操作系統(tǒng)中也可以用完全用c語言來實(shí)現(xiàn),再加上gcc這一優(yōu)秀的編譯器目前已經(jīng)能夠?qū)ψ罱K生成的代碼進(jìn)行很好的優(yōu)化,的確有足夠的理由讓我們可以暫時(shí)將匯編語言拋在一邊了。但實(shí)際情況是linux程序員有時(shí)還是需要使用匯編,或者不得不使用匯編,理由很簡(jiǎn)單:精簡(jiǎn)、高效和libc無關(guān)性。假設(shè)要移植linux到某一特定的嵌入式硬件環(huán)境下,首先必然面臨如何減少系統(tǒng)大小、提高執(zhí)行效率等問題,此時(shí)或許只有匯編語言能幫上忙了。第2章 匯編語言的基本元素2.1 匯編語言的語句格式 由匯編語言編寫的源程序是由許多語句(也可稱為匯編指令)組成的。每個(gè)語句由14個(gè)部分組成,其格式是: 標(biāo)識(shí)符 指令助記符 操作數(shù);注

5、解其中用方括號(hào)括起來的部分可有可無。每部分之間用空格(至少一個(gè))分開,一行最多可有132個(gè)字符。2.2 匯編語言的運(yùn)算符1算術(shù)運(yùn)算符、邏輯運(yùn)算符和關(guān)系運(yùn)算符 算術(shù)運(yùn)算符可以應(yīng)用于數(shù)字操作數(shù),結(jié)果也是數(shù)字。而應(yīng)用于存儲(chǔ)器操作數(shù)時(shí),只有、 運(yùn)算符有意義。2取值運(yùn)算符seg、offset、type、size和length seg和offset分別給出一個(gè)變量或標(biāo)號(hào)的段地址和偏移量。 type操作符返回一個(gè)表示存儲(chǔ)器操作數(shù)類型的數(shù)值。各種存儲(chǔ)器地址操作數(shù)類型部分的值如表3-1所示。表3-1 存儲(chǔ)器操作數(shù)的類型屬性及返回值字節(jié)1字2雙字4near1far2 length和size操作符只應(yīng)用于數(shù)據(jù)存儲(chǔ)器

6、操作數(shù)。(用db/dw/dd且用dup等定義的操作數(shù)) length返回一個(gè)與存儲(chǔ)器地址操作數(shù)相聯(lián)系的基本數(shù)據(jù)個(gè)數(shù), size操作數(shù)返回一個(gè)為存儲(chǔ)器操作數(shù)分配的字節(jié)數(shù)(即單元數(shù))。3屬性運(yùn)算符 屬性運(yùn)算符用來給指令中的操作數(shù)指定一個(gè)臨時(shí)屬性,而暫時(shí)忽略當(dāng)前的屬性。常用的有:(1) 合成運(yùn)算符ptr它作用于操作數(shù)時(shí),則忽略了操作數(shù)當(dāng)前的類型(字節(jié)或字)及屬性(near或far),而給出一個(gè)臨時(shí)的類型或?qū)傩?,一般格式:類?ptr 表達(dá)式功能:建立一個(gè)存儲(chǔ)器地址操作數(shù),它與其后的存儲(chǔ)器地址操作數(shù)有相同的段地址偏移量,但有不同的類型。例如:slot dw 25 此時(shí)slot已定義成字單元。若我們想取

7、出它的第一個(gè)字節(jié)內(nèi)容,則可用ptr對(duì)其作用,使它暫時(shí)改變?yōu)樽止?jié)單元。2.3表達(dá)式 是由運(yùn)算符和操作數(shù)組成的序列,在匯編時(shí)產(chǎn)生一個(gè)確定的值。這個(gè)值可以僅表示一個(gè)常量,也可以表示一個(gè)存儲(chǔ)單元的偏移地址,相應(yīng)的表達(dá)式稱為常量表達(dá)式和地址表達(dá)式。1常數(shù) 匯編語言語句中出現(xiàn)的常數(shù)可以有7種: 二進(jìn)制數(shù) 后跟字母b,如01000001b。 八進(jìn)制數(shù) 后跟字母q或o,如202q或202o。 十進(jìn)制數(shù) 后跟d或不跟字母,如85d或85。 十六進(jìn)制數(shù) 后跟h,如56h,0ffh。注意,當(dāng)數(shù)字的第一個(gè)字符是af時(shí),在字符前應(yīng)添加一個(gè)數(shù)字0,以示和變量的區(qū)別。 另有,十進(jìn)制浮點(diǎn)數(shù)、十六進(jìn)制實(shí)數(shù)、字符和字符串2常量操

8、作數(shù) 常量操作數(shù)是一個(gè)數(shù)值操作數(shù),一般是常量或者是表示常量的標(biāo)識(shí)符??梢詾閿?shù)字常量操作數(shù)或字符串常量操作數(shù)。前者可采用二進(jìn)制、八進(jìn)制、十進(jìn)制或十六進(jìn)制等計(jì)數(shù)形式;而后者則為相應(yīng)字符的ascii碼。3存儲(chǔ)器操作數(shù) 存儲(chǔ)器操作數(shù)是一個(gè)地址操作數(shù),代表一個(gè)存儲(chǔ)單元的地址,通常以標(biāo)識(shí)符的形式出現(xiàn)。 存儲(chǔ)器操作數(shù)可以分為變量及標(biāo)號(hào)兩者類型,如果存儲(chǔ)器操作數(shù)所代表的是某個(gè)數(shù)據(jù)在數(shù)據(jù)段、附加段或堆棧段中的地址,那么這個(gè)存儲(chǔ)器操作數(shù)就稱為變量;如果存儲(chǔ)器操作數(shù)所代表的是某條指令代碼在碼段中的地址,那么這個(gè)存儲(chǔ)器操作數(shù)稱為標(biāo)號(hào)。變量所對(duì)應(yīng)的存儲(chǔ)單元內(nèi)容在程序的運(yùn)行過程中是可以改變的,標(biāo)號(hào)通常作為轉(zhuǎn)移指令或調(diào)用指

9、令的目標(biāo)操作數(shù),在程序運(yùn)行過程中不能改變。 存儲(chǔ)器操作數(shù)有三個(gè)方面的屬性。 (1) 段地址:即存儲(chǔ)器操作數(shù)所對(duì)應(yīng)的存儲(chǔ)單元所在段的段地址; (2) 偏移地址:即存儲(chǔ)器操作數(shù)所對(duì)應(yīng)的存儲(chǔ)單元在所在段內(nèi)的偏移地址;(3) 類型:變量的類型是相應(yīng)存儲(chǔ)單元所存放的數(shù)據(jù)項(xiàng)的字節(jié)數(shù);而標(biāo)號(hào)的類型則反映了相應(yīng)存儲(chǔ)單元地址在作為轉(zhuǎn)移或調(diào)用指令的目標(biāo)操作數(shù)時(shí)的尋址方式,可有兩種情況,即 near和far。4常量表達(dá)式 由常量操作數(shù)及運(yùn)算符構(gòu)成,在匯編時(shí)產(chǎn)生一個(gè)常量。如port、val十1、 offset sum、seg sum、type cycle等。5地址表達(dá)式 由存儲(chǔ)器操作數(shù)與運(yùn)算符構(gòu)成,必須有明確的物理意

10、義。例如 sum2、cycle5表達(dá)式sum2、cycle5的值仍然是一個(gè)存儲(chǔ)器操作數(shù),該存儲(chǔ)器操作數(shù)的段地址與類型屬性分別與存儲(chǔ)器操作數(shù)sum及cycle相同,但偏移地址分別比sum及cycle大2或小5。表達(dá)式是在匯編時(shí)計(jì)算的,而變量單元的內(nèi)容在程序的運(yùn)行過程中可以改變。2.4 匯編語言程序匯編步驟1編寫源程序 在弄規(guī)定,逐個(gè)模塊地編寫匯編語言源程序。通常使用編輯軟件(例如:edlin、edit或其他軟件),將源程序輸入到計(jì)算機(jī)中。匯編語言源程序的擴(kuò)展名為.asm 。 2匯編 利用匯編程序(或宏匯編程序)(asm或masm)對(duì)匯編語言源程序進(jìn)行匯編,產(chǎn)生擴(kuò)展名為.obj的可重定位的目的代碼

11、。 同時(shí),如果需要,宏匯編還可以產(chǎn)生擴(kuò)展名為.lst的列表文件和擴(kuò)展名為.crf的交叉參考文件。前者列出匯編產(chǎn)生的目的代碼及與之有關(guān)的地址、源語句和符號(hào)表;后者再經(jīng)cref文件處理可得各定義符號(hào)與源程序行號(hào)的對(duì)應(yīng)清單。 在對(duì)源程序進(jìn)行匯編過程中,匯編程序會(huì)對(duì)源程序中的非邏輯性錯(cuò)誤給出顯示,例如,源程序中使用了非法指令、標(biāo)號(hào)重復(fù)、相對(duì)轉(zhuǎn)移超出轉(zhuǎn)移范圍等等。利用這些提示,設(shè)計(jì)者需修改源程序,以消除這些語法上的錯(cuò)誤。 程序設(shè)計(jì)者在改正源程序中的錯(cuò)誤過程中,重新編輯源程序,形成新的.asm文件。然后重新匯編,直到匯編程序顯示無錯(cuò)誤為止。 3連接 利用連接程序(link)可將一個(gè)或多個(gè).obj文件進(jìn)行連

12、接,生成擴(kuò)展名為.exe的可執(zhí)行文件。在連接過程中,link同樣會(huì)給出錯(cuò)誤提示。設(shè)計(jì)者應(yīng)根據(jù)錯(cuò)誤提示,分析發(fā)生錯(cuò)誤的原因,并修改源程序,然后重復(fù)前面的過程匯編、連接,最后得到.exe可執(zhí)行文件。 4調(diào)試 對(duì)于稍大一些的程序來說,經(jīng)過上述步驟所獲得的.exe文件,在運(yùn)行過程中難免無錯(cuò)。也就是說,前面只能發(fā)現(xiàn)一些明顯的語法上的錯(cuò)誤。而對(duì)程序的邏輯錯(cuò)、能否達(dá)到預(yù)期的功能均無法得知。因此,必須對(duì)可執(zhí)行文件(.exe文件)進(jìn)行調(diào)試。通過調(diào)試來證明程序確實(shí)能達(dá)到預(yù)期的功能且沒有漏洞。 程序調(diào)試通過則可進(jìn)入試運(yùn)行。在試運(yùn)行過程中不斷進(jìn)行觀察、測(cè)試,發(fā)現(xiàn)問題及時(shí)解決,最后完成軟件設(shè)計(jì)。第3章 偽指令 偽指令用

13、來對(duì)匯編程序進(jìn)行控制,對(duì)程序中的數(shù)據(jù)實(shí)現(xiàn)條件轉(zhuǎn)移、列表、存儲(chǔ)空間分配等處理,其格式和匯編指令一樣,但一般不產(chǎn)生目的代碼,即不直接命令cpu去執(zhí)行什么操作。3.1 定義數(shù)據(jù)偽指令 該類偽指令用來定義存儲(chǔ)空間及其所存數(shù)據(jù)的長(zhǎng)度。 db:定義字節(jié),即每個(gè)數(shù)據(jù)是1個(gè)字節(jié)。 dw:定義字,即每個(gè)數(shù)據(jù)占1個(gè)字(2個(gè)字節(jié))。 dd:定義雙字,即每個(gè)數(shù)據(jù)占2個(gè)字。低字在低地址,高字在高地址。 dq:定義4字長(zhǎng),即每個(gè)數(shù)據(jù)占4個(gè)字。 dt:定義10個(gè)字節(jié)長(zhǎng),用于壓縮式十進(jìn)制數(shù)。3.2 符號(hào)定義偽指令equ、=、及purge equ 偽指令給符號(hào)定義一個(gè)值。在程序中,凡是出現(xiàn)該符號(hào)的地方,匯編時(shí)均用其值代替。3.

14、3段定義偽指令segment和ends 一般來說,一個(gè)完整的匯編源程序由3個(gè)段組成,即堆棧段、數(shù)據(jù)段和代碼段。段定義偽指令可將源程序劃分成若干段,以便生成目的代碼和連接時(shí)將各同名段進(jìn)行組合。段定義偽指令一般格式為 : 段名 segment 定位類型 組合類型 類別 段名 ends segment和end5應(yīng)成對(duì)使用,缺不可。其中段名是不可省略的。其它是可選項(xiàng),是賦予段名的屬性,可以省略。3.4 設(shè)定段寄存器偽指令assume 一般格式: assume 段寄存器:段名,段寄存器:段名,功能:通知匯編程序,哪一個(gè)段寄存器是該段的段寄存器,以便對(duì)使用變量或標(biāo)號(hào)的指令匯編出正確的目的代碼。3.5定義過

15、程的偽指令proc和endp 在程序設(shè)計(jì)中,可將具有一定功能的程序段看成為一個(gè)過程(相當(dāng)于一個(gè)子程序),它可以被別的程序調(diào)用。要求先定義后使用。一個(gè)過程由偽指令proc和endp來定義,其格式為: 過程名 proc 類型 過程體 ret 過程名 endp其中過程名是為過程所起的名稱,不能省略,過程的類型由far(遠(yuǎn)過程,為段間調(diào)用)和near(近過程,在本段內(nèi)調(diào)用)來確定,如果缺省類型,則該過程就默認(rèn)為近過程。endp表示過程結(jié)束。過程體內(nèi)至少應(yīng)有一條ret指令,以便返回被調(diào)用處。過程可以嵌套,也可以遞歸使用。3.6 宏指令 在匯編語言書寫的源程序中,若有的程序段要多次使用,為了簡(jiǎn)化程序書寫,

16、該程序段可以用一條宏指令來代替,而匯編程序匯編到該宏指令時(shí),仍會(huì)產(chǎn)生源程序所需的代碼。3.7 org 偽指令org偽指令規(guī)定了在某一段內(nèi),程序或數(shù)據(jù)代碼存放的起始偏移地址。 一般格式: org 3.8 匯編結(jié)束偽指令end 該偽指令表示源程序的結(jié)束令匯編程序停止匯編。因此,任何一個(gè)完整的源程序均應(yīng)有end指令。一般格式: end 表達(dá)式其中表達(dá)式表示該匯編程序的啟動(dòng)地址。例如:end start ;表明該程序的啟動(dòng)地址為start。第4章 匯編程序設(shè)計(jì)4.1 簡(jiǎn)單程序設(shè)計(jì) 簡(jiǎn)單程序設(shè)計(jì)是沒有分支,沒有循環(huán)的直線運(yùn)行程序,程序執(zhí)行按照ip內(nèi)容自動(dòng)增加的順序進(jìn)行。4.2分支程序設(shè)計(jì) 分支程序的基本

17、思想是根據(jù)邏輯判斷的結(jié)果來形成程序的分支,如圖,若a成立,則執(zhí)行p1;否則執(zhí)行p2。 4.3循環(huán)程序設(shè)計(jì) 循環(huán)程序是經(jīng)常遇到的程序結(jié)構(gòu),一個(gè)循環(huán)結(jié)構(gòu)通常由以下幾個(gè)部分組成。 圖3-4 循環(huán)結(jié)構(gòu)示意圖1.循環(huán)初始化部分。一般要進(jìn)行地址指針、循環(huán)次數(shù)及某標(biāo)志的設(shè)置,相關(guān)寄存器的清零等操作。只有正確地進(jìn)行了初始化設(shè)置, 循環(huán)程序才能正確運(yùn)行,及時(shí)停止。2循環(huán)體。是要求重復(fù)執(zhí)行的程序段部分,對(duì)應(yīng)于要求重復(fù)執(zhí)行的操作。 3循環(huán)控制部分。由該部分修改并判斷控制循環(huán)的條件是否滿足。以決定是否繼續(xù)循環(huán)。 4循環(huán)結(jié)束部分。如保存循環(huán)運(yùn)行結(jié)果等。 循環(huán)程序有兩種結(jié)構(gòu)形式,一種是dowhile結(jié)構(gòu),另一種是doun

18、til結(jié)構(gòu)。前者把循環(huán)控制部分放在循環(huán)體的前面,先判斷執(zhí)行循環(huán)體的條件,滿足條件就執(zhí)行循環(huán)體,否則就退出循環(huán),如圖3-4(2)所示。而后者則是在執(zhí)行循環(huán)體之后,再判斷循環(huán)控制條件是否滿足,若滿足條件,則繼續(xù)執(zhí)行循環(huán)操作,否則,則退出循環(huán)。如圖3-4(1)所示。dowhile結(jié)構(gòu)的循環(huán)程序,其循環(huán)體有可能并不執(zhí)行,而dountil循環(huán)程序的循環(huán)體至少必須執(zhí)行一次。4.4 子程序設(shè)計(jì) 子程序是程序設(shè)計(jì)中經(jīng)常使用的程序結(jié)構(gòu),通過把一些固定的、經(jīng)常使用的功能做成子程序的形式,可以使源程序及目標(biāo)程序大大縮短,提高程序設(shè)計(jì)的效率和可靠性。對(duì)于一個(gè)子程序,應(yīng)該注意它的入口參數(shù)和出口參數(shù)。入口參數(shù)是由主程序傳

19、給子程序的參數(shù),而出口參數(shù)是子程序運(yùn)算完傳給主程序的結(jié)果。另外,子程序所使用的寄存器和存儲(chǔ)單元往往需要保護(hù),以免影響返回后主程序的運(yùn)行。主程序在調(diào)用子程序時(shí),一方面初始數(shù)據(jù)要傳給子程序,另一方面子程序運(yùn)行結(jié)果要傳給主程序,因此,主子程序之間的參數(shù)傳遞是非常重要的。第5章 匯編語言的優(yōu)點(diǎn)與缺點(diǎn)1. 優(yōu)點(diǎn)匯編語言直接同計(jì)算機(jī)的底層軟件甚至硬件進(jìn)行交互,它具有如下一些優(yōu)點(diǎn):(1)能夠直接訪問與硬件相關(guān)的存儲(chǔ)器或i/o端口; (2)能夠不受編譯器的限制,對(duì)生成的二進(jìn)制代碼進(jìn)行完全的控制; (3)能夠?qū)﹃P(guān)鍵代碼進(jìn)行更準(zhǔn)確的控制,避免因線程共同訪問或者硬件設(shè)備共享引起的死鎖; (4)能夠根據(jù)特定的應(yīng)用對(duì)代

20、碼做最佳的優(yōu)化,提高運(yùn)行速度; (5)能夠最大限度地發(fā)揮硬件的功能。2. 缺點(diǎn) 同時(shí)還應(yīng)該認(rèn)識(shí)到,匯編語言是一種層次非常低的語言,它僅僅高于直接手工編寫二進(jìn)制的機(jī)器指令碼,因此不可避免地存在一些缺點(diǎn): (1)編寫的代碼非常難懂,不好維護(hù); (2)很容易產(chǎn)生bug,難于調(diào)試; (3)只能針對(duì)特定的體系結(jié)構(gòu)和處理器進(jìn)行優(yōu)化; (4)開發(fā)效率很低,時(shí)間長(zhǎng)且單調(diào)。第6章 匯編語言的特點(diǎn)匯編語言比機(jī)器語言易于讀寫、調(diào)試和修改,同時(shí)具有機(jī)器語言全部?jī)?yōu)點(diǎn)。但在編寫復(fù)雜程序時(shí),相對(duì)高級(jí)語言代碼量較大,而且匯編語言依賴于具體的處理器體系結(jié)構(gòu),不能通用,因此不能直接在不同處理器體系結(jié)構(gòu)之間移植。匯編語言的特點(diǎn):

21、1.面向機(jī)器的低級(jí)語言,通常是為特定的計(jì)算機(jī)或系列計(jì)算機(jī)專門設(shè)計(jì)的。 2.保持了機(jī)器語言的優(yōu)點(diǎn),具有直接和簡(jiǎn)捷的特點(diǎn)。 3.可有效地訪問、控制計(jì)算機(jī)的各種硬件設(shè)備,如磁盤、存儲(chǔ)器、cpu、i/o端口等。 4.目標(biāo)代碼簡(jiǎn)短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計(jì)語言。 5.經(jīng)常與高級(jí)語言配合使用,應(yīng)用十分廣泛。 對(duì)于不同型號(hào)的計(jì)算機(jī),有著不同的結(jié)構(gòu)的匯編語言,匯編語言由于采用了助記符號(hào)來編寫程序,比用機(jī)器語言的二進(jìn)制代碼編程要方便些,在一定程度上簡(jiǎn)化了編程過程。匯編語言的特點(diǎn)是用符號(hào)代替了機(jī)器指令代碼,而且助記符與指令代碼一一對(duì)應(yīng),基本保留了機(jī)器語言的靈活性。使用匯編語言能面向機(jī)器并較好地發(fā)揮

22、機(jī)器的特性,得到質(zhì)量較高的程序。 匯編語言是面向具體機(jī)型的,它離不開具體計(jì)算機(jī)的指令系統(tǒng),因此,對(duì)于不同型號(hào)的計(jì)算機(jī),有著不同的結(jié)構(gòu)的匯編語言,而且,對(duì)于同一問題所編制的匯編語言程序在不同種類的計(jì)算機(jī)間是互不相通的。 匯編語言中由于使用了助記符號(hào),用匯編語言編制的程序輸入計(jì)算機(jī),計(jì)算機(jī)不能象用機(jī)器語言編寫的程序一樣直接識(shí)別和執(zhí)行,必須通過預(yù)先放入計(jì)算機(jī)的匯編程序中進(jìn)行加工和翻譯,才能變成能夠被計(jì)算機(jī)直接識(shí)別和處理的二進(jìn)制代碼程序。用匯編語言等非機(jī)器語言書寫好的符號(hào)程序稱為源程序,運(yùn)行時(shí)匯編程序要將源程序翻譯成目標(biāo)程序。目標(biāo)程序是機(jī)器語言程序,當(dāng)它被安置在內(nèi)存的預(yù)定位置上,就能被計(jì)算機(jī)的cpu處

23、理和執(zhí)行。 匯編語言像機(jī)器指令一樣,是硬件操作的控制信息,因而仍然是面向機(jī)器的語言,使用起來還是比較繁瑣費(fèi)時(shí),通用性也差。但是,匯編語言用來編制系統(tǒng)軟件和過程控制軟件,其目標(biāo)程序占用內(nèi)存空間少,運(yùn)行速度快,有著高級(jí)語言不可替代的用途。第7章 匯編語言的應(yīng)用匯編語言作為最基本的編程語言之一,匯編語言雖然應(yīng)用的范圍不算很廣,但重要性卻勿庸置疑,因?yàn)樗軌蛲瓿稍S多其它語言所無法完成的功能。就拿linux內(nèi)核來講,雖然絕大部分代碼是用c語言編寫的,但仍然不可避免地在某些關(guān)鍵地方使用了匯編代碼,其中主要是在linux的啟動(dòng)部分。由于這部分代碼與硬件的關(guān)系非常密切,即使是c語言也會(huì)有些力不從心,而匯編語言

24、則能夠很好揚(yáng)長(zhǎng)避短,最大限度地發(fā)揮硬件的性能。1.70%以上的系統(tǒng)軟件是用匯編語言編寫的。 2.某些快速處理、位處理、訪問硬件設(shè)備等高效程序是用匯編語言編寫的。 3.某些高級(jí)繪圖程序、視頻游戲程序是用匯編語言編寫的。 匯編語言是理解整個(gè)計(jì)算機(jī)系統(tǒng)的最佳起點(diǎn)和最有效途徑,人們經(jīng)常認(rèn)為匯編語言的應(yīng)用范圍很小,而忽視它的重要性。其實(shí)匯編語言對(duì)每一個(gè)希望學(xué)習(xí)計(jì)算機(jī)科學(xué)與技術(shù)的人來說都是非常重要的,是不能不學(xué)習(xí)的語言。所有可編程計(jì)算機(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í)和使用匯編語言,能夠感知、體會(huì)、理解機(jī)器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論