第5章匯編語言的基本語法_第1頁
第5章匯編語言的基本語法_第2頁
第5章匯編語言的基本語法_第3頁
第5章匯編語言的基本語法_第4頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第5章章 匯編語言的基本語法匯編語言的基本語法本章主要內(nèi)容本章主要內(nèi)容1.1.匯編語言的主要特點匯編語言的主要特點2.2.匯編語言源程序的基本結(jié)構(gòu)匯編語言源程序的基本結(jié)構(gòu)3.3.匯編語言的表達式和偽操作符匯編語言的表達式和偽操作符4.4.匯編語言程序的上機過程匯編語言程序的上機過程Assemble Languagen一種面向機器的程序設(shè)計語言,是一種用符號表一種面向機器的程序設(shè)計語言,是一種用符號表示的低級程序設(shè)計語言示的低級程序設(shè)計語言(機器語言的符號化描(機器語言的符號化描述)述),通常是為特定計算機或計算機系列專門設(shè),通常是為特定計算機或計算機系列專門設(shè)計的。計的。Assemble L

2、anguagen用匯編語言編寫的程序不用匯編語言編寫的程序不能由機器直接執(zhí)行,而必能由機器直接執(zhí)行,而必須經(jīng)匯編程序翻譯成機器須經(jīng)匯編程序翻譯成機器語言程序。匯編語言指令語言程序。匯編語言指令與翻譯成的機器語言指令與翻譯成的機器語言指令之間基本是一一對應(yīng)的關(guān)之間基本是一一對應(yīng)的關(guān)系。系。n匯編過程示意匯編過程示意:n采用匯編語言進行程序設(shè)計的優(yōu)點采用匯編語言進行程序設(shè)計的優(yōu)點:n可充分利用機器的硬件功能和結(jié)構(gòu)特點,加快程可充分利用機器的硬件功能和結(jié)構(gòu)特點,加快程序的執(zhí)行速度,減少目標(biāo)程序所占用的存儲空間。序的執(zhí)行速度,減少目標(biāo)程序所占用的存儲空間。n常用來編寫實時控制程序、實時通信程序?qū)崟r控制

3、程序、實時通信程序,有時也用來編制某些系統(tǒng)軟件程序某些系統(tǒng)軟件程序。缺點:缺點:1. 編程效率低(與人們描述計算過程的需要差距編程效率低(與人們描述計算過程的需要差距大)大);2. 與機器硬件的具體結(jié)構(gòu)聯(lián)系過于緊密與機器硬件的具體結(jié)構(gòu)聯(lián)系過于緊密 在一種結(jié)構(gòu)的機器上開發(fā)的程序極難移植在一種結(jié)構(gòu)的機器上開發(fā)的程序極難移植到另一種不同結(jié)構(gòu)的機器上去。到另一種不同結(jié)構(gòu)的機器上去。示例程序示例程序DATA SEGMENT ;數(shù)據(jù)段 NUM DW 0011101000000111B NOTES DB The result is : , $DATA ENDSCODE SEGMENT ;代碼段 ASSUME

4、 CS:CODE,DS:DATA BEGIN: MOV AX, DATA MOV DS,AX MOV DX,OFFSET NOTES ;顯示提示信息 MOV AH,9H INT 21H MOV BX,NUM ;將數(shù)裝入BX MOV CH,4 ;CH作循環(huán)計數(shù)器 示例程序(續(xù))示例程序(續(xù))ROTATE : DISPLAY: MOV CL, 4 ;CL中放移位位數(shù) MOV DL, AL ;顯示16進制數(shù) ROL BX,CL MOV AH,2 MOV AL,BL INT 21H AND AL,0FH ;AL中為一位16進制數(shù) DEC CH ADD AL,30H ;轉(zhuǎn)換為ASCII碼值 JNZ RO

5、TATE CMP AL,9 ;是09的數(shù)碼? MOV AX,4C00H;返回DOS JLE DISPLAY INT 21H ADD AL,07H ;在AF之間 CODE ENDS ;代碼段結(jié)束 END BEGIN ;模塊結(jié)束堆棧段定義格式堆棧段定義格式STACK SEGMENT STACK STA DB 50 DUP (?) TOP EQU LENGTH STASTACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS, AX MOV SP,TOP :

6、CODE ENDS END START 5.1.2 匯編語言源程序的組成匯編語言源程序的組成1. 偽指令語句和指令語句偽指令語句和指令語句匯編語言源程序中除了包含機器指令外,還應(yīng)包含說明性匯編語言源程序中除了包含機器指令外,還應(yīng)包含說明性的的“指令指令”。這些說明性的。這些說明性的“指令指令”是面向匯編程序和連是面向匯編程序和連接程序的,稱為接程序的,稱為偽指令偽指令(Directives)。宏匯編程序宏匯編程序5.0版版(MASM V5.0)規(guī)定,匯編語言源程序的規(guī)定,匯編語言源程序的每行只能寫一個語句:每行只能寫一個語句: 指令語句或偽指令語句指令語句或偽指令語句。行長不。行長不能超過能超

7、過128個字符。每個語句最多可由四個字段組成:個字符。每個語句最多可由四個字段組成: 名名字字段、操作字段、操作數(shù)字段和注釋字段。字字段、操作字段、操作數(shù)字段和注釋字段。 偽指令語句是說明性語句,其格式為:偽指令語句是說明性語句,其格式為: 名字偽指令說明符參數(shù)表達式名字偽指令說明符參數(shù)表達式1,參數(shù)表達式,參數(shù)表達式2, ;注釋;注釋其中,偽指令說明符其中,偽指令說明符(偽指令名偽指令名)是偽指令語句中不可缺少是偽指令語句中不可缺少的主體,其余部分的主體,其余部分(方括號中的內(nèi)容方括號中的內(nèi)容)有時可省略。有時可省略。名字可為段名、過程名、變量名、符號名名字可為段名、過程名、變量名、符號名(

8、或常量名或常量名)、宏、宏名、結(jié)構(gòu)名、記錄名等。名、結(jié)構(gòu)名、記錄名等。例:例: A DB 20H,30H ; 注釋注釋 指令語句是可執(zhí)行語句,其格式為:指令語句是可執(zhí)行語句,其格式為: 名字名字:指令操作助記符操作數(shù)表達式指令操作助記符操作數(shù)表達式1,操作數(shù)表達式,操作數(shù)表達式2;注釋;注釋其中,其中,指令操作助記符指令操作助記符(指令名指令名)是指令語句中不可缺少的是指令語句中不可缺少的主體,其余部分主體,其余部分(方括號中的內(nèi)容方括號中的內(nèi)容)有時可省略。有時可省略。名字只能是標(biāo)號。名字只能是標(biāo)號。 注釋以分號開頭,分號右邊的內(nèi)容將被匯編程序忽略。注釋以分號開頭,分號右邊的內(nèi)容將被匯編程序

9、忽略。例例 L: ADD AX,BX ;注釋注釋 匯編程序負責(zé)計算偽指令語句中表達式的值,解釋偽指令匯編程序負責(zé)計算偽指令語句中表達式的值,解釋偽指令語句的含義并遵照語句的含義并遵照“執(zhí)行執(zhí)行”,但并不產(chǎn)生機器代碼。但并不產(chǎn)生機器代碼。匯編程序負責(zé)計算指令語句中表達式的值,并匯編程序負責(zé)計算指令語句中表達式的值,并將匯編指令將匯編指令翻譯成機器指令代碼。翻譯成機器指令代碼。指令語句經(jīng)匯編后,在可執(zhí)行程序運行期間由指令語句經(jīng)匯編后,在可執(zhí)行程序運行期間由CPU解釋,解釋,并由并由CPU按指令的要求完成各種運算與操作。按指令的要求完成各種運算與操作。 5.1.4 匯編語言的表達式1. 匯編語言的標(biāo)

10、識符匯編語言的標(biāo)識符2. 匯編語言的操作對象匯編語言的操作對象( 數(shù)據(jù)類型數(shù)據(jù)類型) (1) 常數(shù)、常量編程時已經(jīng)確定其值,程序運行期間不會改變其值的數(shù)據(jù)編程時已經(jīng)確定其值,程序運行期間不會改變其值的數(shù)據(jù)對象稱為常數(shù)。對象稱為常數(shù)。8086/8088CPU允許定義四種形式的常數(shù): 整數(shù)、字符串、“組合BCD碼數(shù)”和實數(shù)(浮點數(shù)),但只能處理整數(shù)、字符串、“組合BCD碼數(shù)”,不能處理實數(shù)(浮點數(shù))。 常數(shù)表達式的名字稱為常量。常數(shù)表達式的名字稱為常量。 (程序員給出的一個名或助記名作為一個確定值的標(biāo)識,(程序員給出的一個名或助記名作為一個確定值的標(biāo)識, 其值在程序執(zhí)行過程中保持不變。)其值在程序

11、執(zhí)行過程中保持不變。)常量可用偽指令說明符常量可用偽指令說明符“EQU”或或“=”定義。定義。例如,例如,A EQU 7或或 A = 7都可將常量都可將常量A的值定義為常數(shù)的值定義為常數(shù)7。 注意:偽指令說明符注意:偽指令說明符EQUEQU左邊的符號名不允許重復(fù)定義,左邊的符號名不允許重復(fù)定義,而而“=”=”左邊的符號名可以重復(fù)定義。左邊的符號名可以重復(fù)定義。 即,即,A EQU 7 A EQU 7 可以:可以:A=7A=7 A EQU 8 ( A EQU 8 (不允許)不允許) A=8A=8 (2) 變量變量編程時只能確定其初始值,程序運行期間可修改其值的數(shù)編程時只能確定其初始值,程序運行期

12、間可修改其值的數(shù)據(jù)對象稱為變量。據(jù)對象稱為變量。變量是存儲單元中的數(shù)據(jù),可定義在任變量是存儲單元中的數(shù)據(jù),可定義在任何段何段(DS、 ES、 SS、 CS),但通常都定義在數(shù)據(jù)段,但通常都定義在數(shù)據(jù)段(DS)和附加段和附加段(ES)。變量由偽指令說明符變量由偽指令說明符DB、DW、DD等定義。需要時可給等定義。需要時可給變量的地址取名字,變量名就是變量地址的名字,可稱為變量的地址取名字,變量名就是變量地址的名字,可稱為變量的符號地址。變量的符號地址。n例如例如, 在下列偽指令語句中,在下列偽指令語句中, A DB 50,60,70,80 DW 50,60,70,80 DD 50,60,70,8

13、0n用用DB、DW、DD說明符各定義了說明符各定義了4個變量,并給出了每個個變量,并給出了每個變量的初始值。變量的初始值。n用用DB定義的每個變量占一個字節(jié)單元,用定義的每個變量占一個字節(jié)單元,用DW定義的每個定義的每個變量占兩個連續(xù)的字節(jié)單元,用變量占兩個連續(xù)的字節(jié)單元,用DD定義的每個變量占四定義的每個變量占四個連續(xù)的字節(jié)單元,這些變量全部都按定義時的順序依次個連續(xù)的字節(jié)單元,這些變量全部都按定義時的順序依次存儲,只是用存儲,只是用DB定義的第一個變量賦予了名字定義的第一個變量賦予了名字A。nA僅代表僅代表DB右邊第一個變量右邊第一個變量(即即DB右邊初值為右邊初值為50的變量的變量)的地

14、址。的地址。 變量有如下的屬性:變量有如下的屬性: 段基值屬性:段基值屬性: 指變量所在段的段基值;指變量所在段的段基值; 偏移地址屬性:偏移地址屬性: 指變量所在的存儲單元的段內(nèi)偏移地指變量所在的存儲單元的段內(nèi)偏移地址;址; 類型屬性:類型屬性: 指變量所占存儲單元的字節(jié)數(shù)。指變量所占存儲單元的字節(jié)數(shù)。(3) 標(biāo)號標(biāo)號n標(biāo)號就是指令地址的名字,也稱為指令的符號地址。標(biāo)號就是指令地址的名字,也稱為指令的符號地址。n標(biāo)號定義在指令的前面標(biāo)號定義在指令的前面(通常是左邊通常是左邊),用冒號作為分隔符。,用冒號作為分隔符。標(biāo)號只能定義在代碼段標(biāo)號只能定義在代碼段(CS)中,它代表其后第一條指令的中,

15、它代表其后第一條指令的第一個字節(jié)的存儲單元地址,用于說明指令在存儲器中的第一個字節(jié)的存儲單元地址,用于說明指令在存儲器中的存儲位置。例如存儲位置。例如, 在下列指令序列中,在下列指令序列中, MOV CX, 2 L:DEC CX JZ LnL就是標(biāo)號,它是就是標(biāo)號,它是JZ指令的直接操作數(shù)指令的直接操作數(shù)(轉(zhuǎn)移地址轉(zhuǎn)移地址).標(biāo)號有如下的屬性:標(biāo)號有如下的屬性: 段基值屬性:段基值屬性: 指標(biāo)號后面第一條指令所在的代碼段的指標(biāo)號后面第一條指令所在的代碼段的段基值;段基值; 偏移地址屬性:偏移地址屬性: 指標(biāo)號后面第一條指令首字節(jié)的段內(nèi)指標(biāo)號后面第一條指令首字節(jié)的段內(nèi)偏移地址;偏移地址; 類型屬

16、性:類型屬性: 也稱距離屬性,是指標(biāo)號與引用該標(biāo)號的也稱距離屬性,是指標(biāo)號與引用該標(biāo)號的指令之間允許距離的指令之間允許距離的遠、近遠、近。 (4) 段名段名每一個段都必須用每一個段都必須用SEGMENT和和ENDS標(biāo)識段的開始和結(jié)標(biāo)識段的開始和結(jié)束,束,SEGMENT和和ENDS左邊必須有名字,段名就是左邊必須有名字,段名就是SEGMENT和和ENDS左邊的名字。左邊的名字。對于同一個段,對于同一個段,ENDS左邊的名字必須與左邊的名字必須與SEGMENT左邊左邊的名字相同。的名字相同。(5) 過程名過程名n過程就是一段程序,可以是主程序,也可以是子程序。一過程就是一段程序,可以是主程序,也可

17、以是子程序。一個代碼段中可以只有一個過程,也可以有多個過程。個代碼段中可以只有一個過程,也可以有多個過程。n每一個過程都可用每一個過程都可用PROC和和ENDP標(biāo)識過程的開始和結(jié)束,標(biāo)識過程的開始和結(jié)束,PROC和和ENDP左邊必須有名字,過程名就是左邊必須有名字,過程名就是PROC和和ENDP左邊的名字。左邊的名字。n對于同一個過程,對于同一個過程,ENDP左邊的名字必須與左邊的名字必須與PROC左邊的左邊的名字相同。名字相同。n過程名等同于標(biāo)號,具有標(biāo)號的全部屬性。過程名等同于標(biāo)號,具有標(biāo)號的全部屬性。過程過程(子程序子程序)的基本結(jié)構(gòu)的基本結(jié)構(gòu) Proc-A PROC NEAR(或FAR

18、) _過程名過程名 _ . . . _ RET Proc-A ENDP (6) 偏移地址計數(shù)器偏移地址計數(shù)器$匯編程序在對源程序進行匯編的過程中,用偏移地址計數(shù)匯編程序在對源程序進行匯編的過程中,用偏移地址計數(shù)器器$來保存當(dāng)前正在匯編的指令的偏移地址或偽指令語句來保存當(dāng)前正在匯編的指令的偏移地址或偽指令語句中變量的偏移地址。中變量的偏移地址。用戶可將用戶可將$用于自己編寫的源程序中。用于自己編寫的源程序中。在每個段開始匯編時,匯編程序在每個段開始匯編時,匯編程序( 匯編器)都將匯編器)都將$清為清為0,以后,每處理一條指令或一個變量,以后,每處理一條指令或一個變量,$就增加一個值,此就增加一個

19、值,此值為該指令或該變量所占的字節(jié)數(shù)。值為該指令或該變量所占的字節(jié)數(shù)??梢?,可見,$的內(nèi)容就是當(dāng)前指令或變量的偏移地址。的內(nèi)容就是當(dāng)前指令或變量的偏移地址。 n在偽指令中在偽指令中,$代表其所在地的偏移地址。例如,如果A的偏移地址是0074H,則語句nA DW 1, 2, $+4, 3, 4, $+4 中的第一個$+4的偏移地址為A+4,第二個$+4的偏移地址為A+10。n匯編后匯編后:n第一個$+4:$+4=(A+4)+4=(0074H+4)+4=007CHn第二個$+4:$+4=(A+10)+4=(0074H+0AH)+4=0082Hn在指令中在指令中,$無論出現(xiàn)在指令的任何位置,都代表本

20、條指無論出現(xiàn)在指令的任何位置,都代表本條指令第一個字節(jié)的偏移地址。例如,令第一個字節(jié)的偏移地址。例如,“JZ $+6”的轉(zhuǎn)向地址的轉(zhuǎn)向地址是該指令的首地址加上是該指令的首地址加上6,$+6還必須是另一條指令的首地還必須是另一條指令的首地址。再如,在下述指令序列中,址。再如,在下述指令序列中, DEC CX JZ $+5 MOV AX, 2 LAB: .n因為因為$代表代表JZ指令的開始地址,而指令的開始地址,而JZ指令占指令占2個字節(jié),這個字節(jié),這里的里的MOV 指令占指令占3個字節(jié),所以,在發(fā)生轉(zhuǎn)移時,個字節(jié),所以,在發(fā)生轉(zhuǎn)移時,JZ指指令會將程序轉(zhuǎn)向令會將程序轉(zhuǎn)向LAB標(biāo)號處的指令標(biāo)號處的

21、指令, 且標(biāo)號且標(biāo)號LAB 可省??墒?。3. 匯編語言的偽操作(運算)符n匯編語言中的操作符號很多,可分為匯編語言中的操作符號很多,可分為算術(shù)操作符、邏輯操算術(shù)操作符、邏輯操作符、關(guān)系操作符、重復(fù)置數(shù)作符、關(guān)系操作符、重復(fù)置數(shù)(復(fù)制復(fù)制)操作符、取屬性操作符、取屬性(分析分析)操作符、指定屬性操作符、指定屬性(合成合成)操作符、分離操作符、結(jié)構(gòu)和記操作符、分離操作符、結(jié)構(gòu)和記錄中專用的操作符錄中專用的操作符等幾類。等幾類。n這些操作符都是面向匯編程序的,都由匯編程序解釋并這些操作符都是面向匯編程序的,都由匯編程序解釋并“執(zhí)行執(zhí)行”,而不是像指令那樣由,而不是像指令那樣由CPU去執(zhí)行。去執(zhí)行。n

22、通常稱這些操作符為通常稱這些操作符為偽操作符偽操作符,稱對應(yīng)的操作為稱對應(yīng)的操作為偽操作。偽操作。 (1) 算術(shù)偽操作算術(shù)偽操作n常見的有常見的有+、-、MOD、SHL、SHR、*、/共共7個符號,分別表個符號,分別表示加、減、取模示加、減、取模(求余數(shù)求余數(shù))、邏輯左移、邏輯右移、乘、除。這、邏輯左移、邏輯右移、乘、除。這些操作符都可用于數(shù)據(jù)之間的運算,些操作符都可用于數(shù)據(jù)之間的運算,+、-操作符還可用于地址操作符還可用于地址之間、數(shù)據(jù)與地址之間的運算。之間、數(shù)據(jù)與地址之間的運算。n 用于數(shù)據(jù)之間的運算時用于數(shù)據(jù)之間的運算時,按每個操作符的定義進行。,按每個操作符的定義進行。 例如,在字節(jié)操

23、作時,例如,在字節(jié)操作時,n“124 MOD 3”的結(jié)果為的結(jié)果為1n“10110101B SHL 2”的結(jié)果為的結(jié)果為11010100Bn注意:注意:“MOV AL, 00011010B SHL 2 ” 中的中的“SHL” 是移位偽是移位偽操操 n 作符作符n “SHL AL,1 ” 中的中的“SHL” 是移位指令助記符是移位指令助記符 n再例如,對如下的定義,再例如,對如下的定義, W1 DW 1, 2, 3, 4, 5, 6, 7 B1 DB 10, 20, 30, 40, 50 N1 EQU B1-W1 N2 EQU $-W1 B2 DB 0n則則N1=14,它是從,它是從W1開始到開

24、始到B1前為止的一組變量的字節(jié)前為止的一組變量的字節(jié)數(shù);數(shù);nN2=19,它是從,它是從W1開始到開始到B2($代表的地址代表的地址)前為止的一組前為止的一組變量的字節(jié)數(shù)變量的字節(jié)數(shù)。(2) 關(guān)系偽操作關(guān)系偽操作n關(guān)系偽操作對兩個數(shù)據(jù)進行比較,有關(guān)系偽操作對兩個數(shù)據(jù)進行比較,有EQ、NE、LT、GT、LE、GE共共6個符號,分別表示等于、不等于、小于、大個符號,分別表示等于、不等于、小于、大于、小于或等于、大于或等于,操作的結(jié)果為邏輯值。于、小于或等于、大于或等于,操作的結(jié)果為邏輯值。n若條件滿足,則結(jié)果為若條件滿足,則結(jié)果為“真真”,若條件不滿足,則結(jié)果為,若條件不滿足,則結(jié)果為“假假”?!?/p>

25、真真”用用-1(n位全位全1)表示,表示,“假假”用用0(n位全位全0)表表示。示。n例如,在字操作時例如,在字操作時: n(60H LE 70H) GE (60H LT 30H) = FFFFH GE 0000H = FFFFH。(3) 邏輯偽操作邏輯偽操作n有有NOT、AND、OR、XOR共共4個符號,分別表示非、與、個符號,分別表示非、與、或、異或,可用于對兩個或、異或,可用于對兩個(或一個或一個)數(shù)據(jù)進行操作。數(shù)據(jù)進行操作。n例如,在字操作時,例如,在字操作時,1234H OR 2AFEH = 3AFEH, NOT 0F0H = FF0FH;n在字節(jié)操作時,在字節(jié)操作時,NOT 0F0

26、H = 0FH。(4) 重復(fù)置數(shù)重復(fù)置數(shù)(復(fù)制復(fù)制)偽操作偽操作n只有只有DUP一個符號,表示對其后一個符號,表示對其后(右邊右邊)的數(shù)據(jù)進行重復(fù)設(shè)的數(shù)據(jù)進行重復(fù)設(shè)置置(復(fù)制復(fù)制),使用格式是:,使用格式是: 重復(fù)次數(shù)重復(fù)次數(shù) DUP (初值初值1, 初值初值2, )n其中,重復(fù)次數(shù)為無符號整數(shù)其中,重復(fù)次數(shù)為無符號整數(shù)(165535),初值,初值1、初值、初值2 為變量的初始值。例如,為變量的初始值。例如, n下面各行的寫法都等效:下面各行的寫法都等效: W DW 25,8,2,3,2,3,6,8,2,3,2,3,6 W DW 25,2 DUP(8,2,3,2,3,6) W DW 1 DUP

27、(25),2 DUP(8,2 DUP(2,3),6) W DW 1 DUP(25),2 DUP(1 DUP(8),2 DUP(2,3),1 DUP(6)n 第一行的寫法將第一行的寫法將13個變量分為個變量分為13組,每組重復(fù)組,每組重復(fù)1次。后三次。后三行的寫法將行的寫法將13個變量分為兩組,第一組將個變量分為兩組,第一組將25重復(fù)一次,第重復(fù)一次,第二組將二組將(8,2,3,2,3,6)重復(fù)兩次。重復(fù)兩次。n無論哪種寫法,我們都將第一組變量的重復(fù)次數(shù)稱為無論哪種寫法,我們都將第一組變量的重復(fù)次數(shù)稱為W的的長度長度,將,將W的長度與的長度與W的類型之積稱為的類型之積稱為W的大小的大小。此處,。

28、此處,W的長度為的長度為1,類型為,類型為2,大小為,大小為2。長度和大小也可看作。長度和大小也可看作變量的屬性。變量的屬性。n練習(xí):練習(xí):若定義若定義A DB 1, 2, 5 DUP(0,1,2 DUP(3),則在則在A的存的存儲區(qū)前儲區(qū)前6個字節(jié)單元的數(shù)據(jù)是個字節(jié)單元的數(shù)據(jù)是 . (5) 取屬性取屬性(也稱分析也稱分析)偽操作偽操作n取屬性偽操作可以取出運算對象的某個屬性。常見的有取屬性偽操作可以取出運算對象的某個屬性。常見的有SEG、OFFSET、TYPE、LENGTH、SIZE共共5個符號,個符號,分別表示取段基值、取偏移地址、取類型、取長度、取大分別表示取段基值、取偏移地址、取類型、

29、取長度、取大小,操作的結(jié)果都是數(shù)值常數(shù)。小,操作的結(jié)果都是數(shù)值常數(shù)。n格式:格式: SEG 變量名或標(biāo)號變量名或標(biāo)號 返回變量或標(biāo)號所在段的段基值。例如,若返回變量或標(biāo)號所在段的段基值。例如,若A為變量名為變量名或標(biāo)號,則或標(biāo)號,則SEG A表示表示A所在段的段基值。所在段的段基值。n 格式:格式: OFFSET 變量名或標(biāo)號變量名或標(biāo)號 返回變量或標(biāo)號的偏移地址部分。例如,若返回變量或標(biāo)號的偏移地址部分。例如,若A為變量名為變量名或標(biāo)號;則或標(biāo)號;則OFFSET A表示表示A的偏移地址部分。的偏移地址部分。n格式:格式: TYPE 變量名或標(biāo)號變量名或標(biāo)號 返回變量或標(biāo)號的類型屬性值。返回變

30、量或標(biāo)號的類型屬性值。n格式:格式: LENGTH 變量名變量名 返回變量的長度,即以返回變量的長度,即以DUP形式表示的第一組變量被重形式表示的第一組變量被重 復(fù)設(shè)置的次數(shù)。復(fù)設(shè)置的次數(shù)。n 格式:格式: SIZE 變量名變量名 返回變量的大小,即返回變量的大小,即TYPELENGTH的值。也就是說,的值。也就是說,SIZE=TYPELENGTH。 關(guān)于關(guān)于TYPE、LENGTH和和SIZE的含義舉例的含義舉例n對于對于“W1 DW 20 DUP(3, 10 DUP(7)”,則,則TYPE W1=2,LENGTH W1=20,SIZE W1=40;n 對于對于“W2 DW 8, 20 DUP

31、(3, 10 DUP(7)”,則,則TYPE W2=2,LENGTH W2=1, SIZE W2=2;n 對于對于“B1 DB 20 DUP(3, 10 DUP(7)”,則,則TYPE B1=1,LENGTH B1= ,SIZE B1= ;n 對于對于“B2 DB 8, 20 DUP(3, 10 DUP(7)”,則,則TYPE B2= ,LENGTH B2= , SIZE B2= 。(6) 指定屬性指定屬性(也稱合成也稱合成)偽操作偽操作n指定屬性偽操作可用于指定存儲器操作數(shù)或標(biāo)號的屬性,指定屬性偽操作可用于指定存儲器操作數(shù)或標(biāo)號的屬性,常見的有常見的有PTR、:、THIS共共3個符號,其功能

32、分別為:個符號,其功能分別為: 指指定存儲器操作數(shù)或標(biāo)號的類型、指定存儲器操作數(shù)的段歸定存儲器操作數(shù)或標(biāo)號的類型、指定存儲器操作數(shù)的段歸屬、指定當(dāng)?shù)氐淖兞炕驑?biāo)號的類型。屬、指定當(dāng)?shù)氐淖兞炕驑?biāo)號的類型。n 格式:格式: 類型名類型名 PTR 存儲器操作數(shù)或標(biāo)號存儲器操作數(shù)或標(biāo)號 例如,指令例如,指令“MOVBX, 5”的含義是將常數(shù)的含義是將常數(shù)5送入存送入存儲單元儲單元BX中中 。該存儲單元的偏移地址由。該存儲單元的偏移地址由BX確定,段確定,段基值隱含為基值隱含為DS。但匯編程序無法確定常數(shù)。但匯編程序無法確定常數(shù)5是字節(jié)還是字,是字節(jié)還是字,也無法確定存儲單元也無法確定存儲單元BX的內(nèi)容是

33、字節(jié)還是字,所以的內(nèi)容是字節(jié)還是字,所以無法操作。無法操作。n格式:格式: 段寄存器名段寄存器名 : 存儲器操作數(shù)存儲器操作數(shù) 臨時指定存儲器操作數(shù)的段歸屬。例如,臨時指定存儲器操作數(shù)的段歸屬。例如,“MOV AX, ES:BX”表示該存儲單元的段基值取自表示該存儲單元的段基值取自ES,而不是,而不是隱含的隱含的DS。 格式:格式: THIS 類型名類型名n臨時指定當(dāng)前地址處變量或標(biāo)號的類型。例如,臨時指定當(dāng)前地址處變量或標(biāo)號的類型。例如,THIS BYTE表示當(dāng)前地址處變量的類型為字節(jié),表示當(dāng)前地址處變量的類型為字節(jié),THIS FAR表表示當(dāng)前地址處標(biāo)號的類型為遠。示當(dāng)前地址處標(biāo)號的類型為遠

34、。nTHIS操作符會在當(dāng)前段內(nèi)產(chǎn)生一個偏移地址與操作符會在當(dāng)前段內(nèi)產(chǎn)生一個偏移地址與$的值相等的值相等的操作數(shù),該操作數(shù)的類型由的操作數(shù),該操作數(shù)的類型由THIS右邊的類型名確定。右邊的類型名確定。qTHIS 可以像可以像PTR一樣建立一個指定類型(一樣建立一個指定類型(BYTE,WORD或或DWORD)或指定距離(或指定距離(NEAR或或FAR)的操作數(shù)。的操作數(shù)。該操該操作數(shù)的段地址和偏移地址與下一個存儲單元地址相同。作數(shù)的段地址和偏移地址與下一個存儲單元地址相同。qTHIS 往往和偽指令說明符往往和偽指令說明符EQU 連用,為當(dāng)前存儲單元定連用,為當(dāng)前存儲單元定義一個指定類型的變量或標(biāo)號

35、,并為下一個能分配存儲單義一個指定類型的變量或標(biāo)號,并為下一個能分配存儲單元的變量和標(biāo)號定義新的類型。例如:元的變量和標(biāo)號定義新的類型。例如: A EQU THIS BYTE B DD 12345678Hq就是將一個雙字類型變量就是將一個雙字類型變量B臨時指定為字節(jié)類型變量,它臨時指定為字節(jié)類型變量,它與與A 具有相同的段地址和偏移量。具有相同的段地址和偏移量。 n例例: . A EQU THIS BYTE B DD 12345678H . CLD MOV SI, OFFSET A LODSB ;AL (DS:SI), SI SI+1 DATA SEGMENT A EQU THIS BYTE

36、B DD 12345678HDATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX CLD MOV SI, OFFSET A LODSB ;AL (DS:SI), SI SI+1 MOV AX,4C00H INT 21HCODE ENDS END START又如:又如: START EQU THIS FARSTART EQU THIS FAR MOV CX ,100 MOV CX ,100 這樣,這樣,MOV MOV 指令指令 有一個有一個FAR FAR 屬性的地址屬性的地址START,START,這

37、就允許這就允許其他段的其他段的JMP JMP 指令直接跳到指令直接跳到STARTSTART來。來。 (7) 分離操作符分離操作符n有有SHORT、HIGH和和LOW三個,其功能是從其后的操作三個,其功能是從其后的操作數(shù)數(shù)(或與其后的操作數(shù)有關(guān)的數(shù)據(jù)或與其后的操作數(shù)有關(guān)的數(shù)據(jù))中分離出一部分內(nèi)容作中分離出一部分內(nèi)容作為返回值。為返回值。n 格式:格式: SHORT 標(biāo)號標(biāo)號 只取出標(biāo)號與只取出標(biāo)號與IP之差之差(標(biāo)號標(biāo)號-IP)的低字節(jié),即將標(biāo)號按短的低字節(jié),即將標(biāo)號按短(距離距離)處理。處理。n 格式:格式: HIGH 字操作數(shù)字操作數(shù) 從字操作數(shù)中分離出高字節(jié)。例如,從字操作數(shù)中分離出高字節(jié)

38、。例如,HIGH 1234H的操作的操作結(jié)果為結(jié)果為12H。n 格式:格式: LOW 字操作數(shù)字操作數(shù) 從字操作數(shù)中分離出低字節(jié)。例如,從字操作數(shù)中分離出低字節(jié)。例如,LOW 1234H的操作的操作結(jié)果為結(jié)果為34H。4. 匯編語言的表達式匯編語言的表達式 (1) 表達式及分類表達式及分類 用偽操作符將操作對象組合起來即得到表達式,單個操作用偽操作符將操作對象組合起來即得到表達式,單個操作對象也可稱為表達式。表達式可作為指令語句中的操作數(shù)對象也可稱為表達式。表達式可作為指令語句中的操作數(shù)或偽指令語句中的參數(shù)。按操作性質(zhì)的不同可將表達式分或偽指令語句中的參數(shù)。按操作性質(zhì)的不同可將表達式分為四類:

39、為四類: 算術(shù)表達式算術(shù)表達式 邏輯表達式邏輯表達式 關(guān)系表達式關(guān)系表達式 特殊表達式特殊表達式 (2) 表達式的操作順序表達式的操作順序 表達式中常用的偽操作符按以下順序依次優(yōu)先處理表達式中常用的偽操作符按以下順序依次優(yōu)先處理: (i)()、 、(ii)LENGTH、WIDTH、SIZE、MASK (iii)(結(jié)構(gòu)字段名操作符結(jié)構(gòu)字段名操作符) (iv): (段超越前綴的操作符段超越前綴的操作符) (v)PTR、OFFSET、SEG、TYPE、THIS (vi)HIGH、LOW (i)+ (正號正號)、- (負號負號) (ii)*、/ (iii)MOD、SHL、SHR (iv)+、 - EQ

40、、NE、LT、LE、GT、GE (i) NOT (ii) AND (iii) OR、XOR SHORT 例如,因為例如,因為“HIGH”運算優(yōu)先于運算優(yōu)先于“+”運算,所以,運算,所以, HIGH 1234H + 2 = 12H + 2 = 14H HIGH (1234H + 2) = HIGH 1236H = 12H5.1.5 匯編語言的偽指令說明符 1. 數(shù)據(jù)定義數(shù)據(jù)定義(存儲單元分配存儲單元分配) 數(shù)據(jù)定義說明符用于定義變量,也就是為變量分配存儲單數(shù)據(jù)定義說明符用于定義變量,也就是為變量分配存儲單元并可同時預(yù)置初始值,有元并可同時預(yù)置初始值,有DB、DW、DD、DF、DQ、DT共共6種說

41、明符。種說明符。 分別表示存儲單元分配時以字節(jié)為單位、以字為單位、以分別表示存儲單元分配時以字節(jié)為單位、以字為單位、以雙字為單位、以雙字為單位、以3字字(遠字遠字)為單位、以為單位、以4字為單位、以字為單位、以10字字節(jié)為單位。節(jié)為單位。 例如,在下述定義中,例如,在下述定義中, A DB 12H, ? B DW ?, 3456H C DD 789ABCDEH D DB A, B, C, D E DB ABCD F DW AB, CD 上述各變量的存儲情況如圖上述各變量的存儲情況如圖5-4所示。顯然,所示。顯然,DBAB和和DWAB的存儲情況不同。的存儲情況不同。A圖圖5-4 變量在存儲器中的

42、存儲情況變量在存儲器中的存儲情況 12?5634BDEBC9A78C41424344D41424344E42414443F程序例程序例DATA SEGMENT TAB DW 1,2,3,4,5,6 ENTRY EQU 3DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATAL: MOV AX, DATA MOV DS, AX MOV BX,OFFSET TAB ADD BX, ENTRY ; MOV AX, TAB+3 MOV AX, BXCODE ENDS END L 上述程序執(zhí)行后上述程序執(zhí)行后,AX= 2. 符號定義符號定義(表達式賦值表達式賦值)有有

43、 =、EQU、PURGE共共3種說明符,含義分別是被賦予、種說明符,含義分別是被賦予、被賦予、取消被賦予、取消(釋放釋放)。(1)格式:格式: 符號名符號名 = 表達式表達式將表達式的值賦予符號名,以后即可用該符號名代表此表將表達式的值賦予符號名,以后即可用該符號名代表此表達式的值。達式的值。(2) 格式:格式: 符號名符號名 EQU 表達式或另一組標(biāo)識符表達式或另一組標(biāo)識符將表達式的值或另一組標(biāo)識符賦予符號名,以后即可用該將表達式的值或另一組標(biāo)識符賦予符號名,以后即可用該符號名代表此表達式的值或代替另一組標(biāo)識符。符號名代表此表達式的值或代替另一組標(biāo)識符。(3) 格式:格式: PURGE 符號

44、名符號名1,符號名,符號名2, 取消取消(釋放釋放)被被EQU定義的符號名,以后即可用定義的符號名,以后即可用EQU對該符對該符號名再賦予不同的含義。號名再賦予不同的含義。3. 段定義段定義段定義說明符共有段定義說明符共有3種,即種,即SEGMENT、ENDS和和ASSUME,含義分別是段開始、段結(jié)束、指定段寄存器。,含義分別是段開始、段結(jié)束、指定段寄存器。(1) 格式:格式: 段名段名 SEGMENT定位類型組合類型定位類型組合類型類別類別從段名代表的段基值開始定義一個段。其中的定位類型、組合類型和從段名代表的段基值開始定義一個段。其中的定位類型、組合類型和類別類別一般都可省略,若不省略時各

45、項的順序不能變。一般都可省略,若不省略時各項的順序不能變。 定位類型:定位類型: 連接時用于指定該段應(yīng)開始于什么樣的物理地址。可連接時用于指定該段應(yīng)開始于什么樣的物理地址??蛇x擇下列選擇下列4種之一:種之一: BYTE: 從當(dāng)前可用的字節(jié)地址從當(dāng)前可用的字節(jié)地址XXXX XXXX XXXX XXXX XXXX(任一地址任一地址)開始;開始;WORD: 從當(dāng)前可用的字地址從當(dāng)前可用的字地址XXXX XXXX XXXX XXXX XXX0(偶數(shù)地址偶數(shù)地址)開始;開始;PARA(缺省缺省): 從當(dāng)前可用的節(jié)地址從當(dāng)前可用的節(jié)地址XXXX XXXX XXXX XXXX 0000(16的倍數(shù)的倍數(shù))開

46、始;開始;PAGE: 從當(dāng)前可用的頁地址從當(dāng)前可用的頁地址XXXX XXXX XXXX 0000 0000(256的倍數(shù)的倍數(shù))開始開始。 其中,其中,1節(jié)(節(jié)(paragraph) 為為16字節(jié),字節(jié),1頁為頁為16節(jié)即節(jié)即256字節(jié)。字節(jié)。 組合類型:組合類型: 連接時用于指定同名的各段之間的組合方式。連接時用于指定同名的各段之間的組合方式。可選擇下列可選擇下列6種之一:種之一: PUBLIC STACK COMMON MEMORY AT表達式表達式 NONE(缺省缺省)若省略組合類型或說明為若省略組合類型或說明為NONE類型,則表示各個段不組類型,則表示各個段不組合,各有自己的段基值。合

47、,各有自己的段基值。對堆棧段,必須用對堆棧段,必須用STACK類型說明,不能省略類型說明,不能省略 。 類別類別: 是要將組合后的各段按是要將組合后的各段按類別類別分類存放,同類別分類存放,同類別的段將被相鄰地放在一起。的段將被相鄰地放在一起。類別類別是由用戶定義的、用一是由用戶定義的、用一對引號括起來的、長度不超過對引號括起來的、長度不超過40個字符的名字個字符的名字(標(biāo)識符標(biāo)識符)。 (2)格式:格式: 段名段名 ENDS 表示該段到此結(jié)束。這里的段名必須與該段開始時表示該段到此結(jié)束。這里的段名必須與該段開始時SEGMENT左邊的段名相同。左邊的段名相同。 (3) 格式:格式: ASSUM

48、E 段寄存器名段寄存器名1:段名段名1,段寄存器名,段寄存器名2:段名段名2, 該語句必須出現(xiàn)在有關(guān)的變量及標(biāo)號使用之前,用于指定該語句必須出現(xiàn)在有關(guān)的變量及標(biāo)號使用之前,用于指定某段某段(用段名標(biāo)識用段名標(biāo)識)中的變量、標(biāo)號等數(shù)據(jù)項由哪個段寄存中的變量、標(biāo)號等數(shù)據(jù)項由哪個段寄存器尋址。器尋址。4. 指定段內(nèi)的偏移地址指定段內(nèi)的偏移地址常用的有常用的有ORG和和EVEN兩種說明符,是指定下一個要用的兩種說明符,是指定下一個要用的存儲單元的偏移地址。存儲單元的偏移地址。(1)格式:格式: ORG 常數(shù)表達式常數(shù)表達式指定當(dāng)前可用的存儲單元的偏移地址為常數(shù)表達式的值,指定當(dāng)前可用的存儲單元的偏移地

49、址為常數(shù)表達式的值,就是將常數(shù)表達式的值送入就是將常數(shù)表達式的值送入$。(2) 格式:格式: EVEN將當(dāng)前可用的存儲單元的偏移地址調(diào)整為最近的偶數(shù)值,將當(dāng)前可用的存儲單元的偏移地址調(diào)整為最近的偶數(shù)值,就是將當(dāng)前可用的最小偶數(shù)偏移地址值送入就是將當(dāng)前可用的最小偶數(shù)偏移地址值送入$。 例如,在下述偽指令語句序列中,例如,在下述偽指令語句序列中, ORG 1000H A DB 47H, 12H, 45H EVEN B DB 47H ORG 1000H 將將A的偏移地址部分指定為的偏移地址部分指定為1000H,從,從A開開始存放始存放3個字節(jié)變量,占用地址個字節(jié)變量,占用地址1000H、1001H和

50、和1002H,B的偏移地址部分的偏移地址部分本應(yīng)是本應(yīng)是1003H,但,但EVEN指令會將指令會將B的偏的偏移地址部分移地址部分調(diào)整為偶數(shù)地址調(diào)整為偶數(shù)地址1004H。對于字數(shù)組,為保證其從偶地址開始,可在它前面用對于字數(shù)組,為保證其從偶地址開始,可在它前面用EVEN 偽操作來達到這一目的,形如:偽操作來達到這一目的,形如: DATA-SEG SEGMENT EVEN WORD-ARRAY DW 100 DUP(?) DATA-SEG ENDS5. 過程定義過程定義有有PROC、ENDP兩種說明符,含義分別是過程開始與過兩種說明符,含義分別是過程開始與過程結(jié)束,必須成對出現(xiàn)。程結(jié)束,必須成對出

51、現(xiàn)。(1)格式:)格式: 過程名過程名 PROC 類型屬性名類型屬性名從過程名代表的地址開始定義一個過程,其中的類型屬性從過程名代表的地址開始定義一個過程,其中的類型屬性名可選擇名可選擇NEAR或或FAR兩種之一,前者表示該過程為近過兩種之一,前者表示該過程為近過程,后者表示該過程為遠過程。程,后者表示該過程為遠過程。如果不給出類型屬性名或給出如果不給出類型屬性名或給出NEAR,則視為近過程。,則視為近過程。(2)格式:)格式: 過程名過程名 ENDP表示該過程到此結(jié)束。這里的過程名必須與過程開始時表示該過程到此結(jié)束。這里的過程名必須與過程開始時PROC左邊的過程名相同。左邊的過程名相同。過程

52、過程(子程序子程序)的基本結(jié)構(gòu)的基本結(jié)構(gòu) Proc-A PROC NEAR(或FAR) _過程名過程名 _ . . . _ RET Proc-A ENDP 6. 類型定義類型定義n類型定義說明符只有一個,即類型定義說明符只有一個,即LABEL,可用來給當(dāng)前地可用來給當(dāng)前地址處的變量或標(biāo)號取一個別名址處的變量或標(biāo)號取一個別名,并賦予另一種類型屬性。并賦予另一種類型屬性。n格式格式: 變量名或標(biāo)號變量名或標(biāo)號 LABEL 類型屬性名類型屬性名n“LABEL”和和“EQU THIS”的作用類似的作用類似5.1.6 宏定義、宏調(diào)用和宏擴展宏定義、宏調(diào)用和宏擴展n宏(宏(MACRO)是源程序中一段有獨立

53、功能的程序代碼、它是源程序中一段有獨立功能的程序代碼、它只需在源程序中定義一次,就可以多次用一條宏指令來調(diào)只需在源程序中定義一次,就可以多次用一條宏指令來調(diào)用它。用它。n宏定義宏定義是用偽指令來實現(xiàn)的。其格式為:是用偽指令來實現(xiàn)的。其格式為:MACRO?ENDMdummy Parameter List宏指令名宏指令名宏定義體宏定義體形式參數(shù)形式參數(shù)(用逗號隔開)其中MACRO和ENDM是一對偽指令說明符,這對偽指令之間是宏定義體一組有獨立功能的程序代碼組有獨立功能的程序代碼Macro-namen經(jīng)宏定義定義后的宏指令就可以在源程序中調(diào)用經(jīng)宏定義定義后的宏指令就可以在源程序中調(diào)用,這種對對宏指令

54、的調(diào)用稱宏指令的調(diào)用稱宏調(diào)用宏調(diào)用,宏調(diào)用的格式為:nMacro-name actual parameter list(每一項之間用逗號隔開每一項之間用逗號隔開)n當(dāng)源程序被匯編時,匯編程序?qū)γ總€宏調(diào)用作當(dāng)源程序被匯編時,匯編程序?qū)γ總€宏調(diào)用作宏展開。宏展開。n宏展開就是用宏定義體取代源程序中的宏指令名,而且用宏展開就是用宏定義體取代源程序中的宏指令名,而且用實在參數(shù)一一取代宏定義的形式參數(shù)。實在參數(shù)一一取代宏定義的形式參數(shù)。例例1. 宏定義可以無變元宏定義宏定義:SAVEREG MACRO PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI E

55、NDM宏調(diào)用宏調(diào)用: SAVEREG宏展開宏展開: 將宏定義體的內(nèi)容(具有獨立功能的代碼段具有獨立功能的代碼段)全部列出。宏定義開始宏定義開始宏定義體宏定義體宏定義結(jié)束宏定義結(jié)束宏指令宏指令例例2 宏定義帶形式參數(shù)宏定義宏定義: FOO MACRO P1, P2, P3 MOV AX, P1 P2 P3 ENDM宏調(diào)用宏調(diào)用: FOO WORD_VAR, INC, AX宏展開宏展開: MOV AX, WORD_VAR INC AX子程序調(diào)用和宏調(diào)用工作方式的區(qū)別n子程序調(diào)用工作方式子程序調(diào)用工作方式:XA,yBCALL QxC,yDCALL Q主程序Q: . . . RET子程序Q(x,y)執(zhí)

56、行時調(diào)用執(zhí)行時調(diào)用n宏調(diào)用工作方式:宏調(diào)用工作方式:Q A,BQ C,D主程序匯編時展開匯編時展開Q(A,B)Q(C,D)Q MACRO x,yENDM子程序調(diào)用和宏調(diào)用工作方式的區(qū)別子程序調(diào)用和宏調(diào)用工作方式的區(qū)別1. 在處理時間上不同。在處理時間上不同。2. 用宏指令得到的目標(biāo)代碼長,占內(nèi)存空間大,而且宏調(diào)用用宏指令得到的目標(biāo)代碼長,占內(nèi)存空間大,而且宏調(diào)用的次數(shù)越多,所占內(nèi)存空間越大;用子程序占內(nèi)存空間的次數(shù)越多,所占內(nèi)存空間越大;用子程序占內(nèi)存空間小,而且不會隨調(diào)用次數(shù)的增加而增加,但執(zhí)行時間長。小,而且不會隨調(diào)用次數(shù)的增加而增加,但執(zhí)行時間長。3. 傳遞參數(shù)的方式不同。傳遞參數(shù)的方式

57、不同。5.1.7 匯編語言程序的開發(fā)匯編語言程序的開發(fā)匯編語言程序的建立及匯編過程匯編語言程序的建立及匯編過程編輯程序Prog.asm文件匯編程序Prog.obj文件連接程序Prog.exe文件Edit.exeMasm.exeLink.exe匯編示意圖匯編示意圖調(diào)用 MASM.EXE.ASM匯編.OBJ.LST.CRF可選1.匯編程序的主要功能匯編程序的主要功能n匯編程序分兩種匯編程序分兩種:n一種是基本匯編一種是基本匯編(ASM.EXE);n一種是宏匯編一種是宏匯編(MASM.EXE),宏匯編功能比較,宏匯編功能比較強。強。1.檢查源程序;檢查源程序;2.測出源程序中的語法錯誤,并給出出錯信息;測出源程序中的語法錯誤,并給出出錯信息;3.產(chǎn)生產(chǎn)生目標(biāo)文件(目標(biāo)文件(.OBJ),并可給出并可給出列表文件列表文件(同時列出匯(同時列出匯編語言源程序和機器語言目標(biāo)程序的文件,稱之為編語言源程序和機器語言目標(biāo)程序的文件,稱之為.LST文文件)件)和和交叉索引文件交叉索引文件(列出程序中使用的符號、變量和標(biāo)(列出程序中使用的符號、變量和標(biāo)號以及引用情況,稱之為號以及引用情況,稱

溫馨提示

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

評論

0/150

提交評論