《匯編語言程序設(shè)計(jì)》第4章課件_第1頁
《匯編語言程序設(shè)計(jì)》第4章課件_第2頁
《匯編語言程序設(shè)計(jì)》第4章課件_第3頁
《匯編語言程序設(shè)計(jì)》第4章課件_第4頁
《匯編語言程序設(shè)計(jì)》第4章課件_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 匯編語言源程序與匯編程序 匯編語言語句種類及其格式 匯編語言數(shù)據(jù)與運(yùn)算符 偽指令 源程序結(jié)構(gòu)模式 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 4.1 4.1 匯編語言源程序與匯編程序匯編語言源程序與匯編程序 1 1、匯編語言源程序、匯編語言源程序匯編語言源程序是用匯編語言編寫的程序,簡(jiǎn)稱匯編語匯編語言源程序是用匯編語言編寫的程序,簡(jiǎn)稱匯編語言程序。匯編語言程序通過編輯程序在計(jì)算機(jī)中建立匯編語言程序。匯編語言程序通過編輯程序在計(jì)算機(jī)中建立匯編語言源程序文件(言源程序文件(ASMAS

2、M文件)。文件)。2 2、匯編程序、匯編程序?qū)R編語言源程序編譯成目標(biāo)程序的加工程序稱為匯編將匯編語言源程序編譯成目標(biāo)程序的加工程序稱為匯編程序。這一加工過程稱為匯編。程序。這一加工過程稱為匯編。 匯編程序的作用就是把源程序文件(匯編程序的作用就是把源程序文件(ASMASM文件)轉(zhuǎn)換成用文件)轉(zhuǎn)換成用二進(jìn)制代碼表示的目標(biāo)程序文件(二進(jìn)制代碼表示的目標(biāo)程序文件(OBJOBJ文件)。文件)。匯編程序的主要功能有:匯編程序的主要功能有: 檢查源程序。檢查源程序。 測(cè)出源程序語法錯(cuò)誤,并給出錯(cuò)誤。測(cè)出源程序語法錯(cuò)誤,并給出錯(cuò)誤。 產(chǎn)生目標(biāo)程序,并可給出列表文件產(chǎn)生目標(biāo)程序,并可給出列表文件 展開宏指令

3、。展開宏指令。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 4.2 4.2 匯編語言語句種類及其格式匯編語言語句種類及其格式 語句是匯編語言源程序的基本組成單位。一個(gè)匯編語言語句是匯編語言源程序的基本組成單位。一個(gè)匯編語言源程序中有源程序中有3 3種基本語句:指令語句、偽指令語句和宏指令種基本語句:指令語句、偽指令語句和宏指令語句。前兩種是最常見、最基本的語句。指令語句和偽指令語句。前兩種是最常見、最基本的語句。指令語句和偽指令語句不僅在程序中的功能不同,而且實(shí)現(xiàn)其功能的方法和時(shí)語句不僅在程序中的功能不同,而且實(shí)現(xiàn)其功能的方法和時(shí)間也是不同的。間也是不同的。

4、 1 1、指令語句、指令語句 指令語句就是計(jì)算機(jī)中指令系統(tǒng)的各條指令,每條指令指令語句就是計(jì)算機(jī)中指令系統(tǒng)的各條指令,每條指令語句在匯編時(shí)都產(chǎn)生一個(gè)供語句在匯編時(shí)都產(chǎn)生一個(gè)供CPUCPU執(zhí)行的機(jī)器目標(biāo)代碼,所以執(zhí)行的機(jī)器目標(biāo)代碼,所以這種語句又稱為可執(zhí)行語句。這種語句又稱為可執(zhí)行語句。計(jì)算機(jī)中每條指令語句表示一種基本功能,這些基本功計(jì)算機(jī)中每條指令語句表示一種基本功能,這些基本功能是在程序運(yùn)行期間由計(jì)算機(jī)硬件來實(shí)現(xiàn)的。一條指令語句能是在程序運(yùn)行期間由計(jì)算機(jī)硬件來實(shí)現(xiàn)的。一條指令語句由四個(gè)字段組成,其一般格式如下:由四個(gè)字段組成,其一般格式如下: 標(biāo)號(hào):標(biāo)號(hào): 指令助記符指令助記符 操作數(shù)操作數(shù)

5、 ;注釋;注釋 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 (1 1)標(biāo)號(hào))標(biāo)號(hào)標(biāo)號(hào)是指令語句的符號(hào)地址,它代表指令代碼存放地址標(biāo)號(hào)是指令語句的符號(hào)地址,它代表指令代碼存放地址的第一個(gè)字節(jié)地址。的第一個(gè)字節(jié)地址。標(biāo)號(hào)是指令語句的可選項(xiàng),通常在一個(gè)程序段或子程序標(biāo)號(hào)是指令語句的可選項(xiàng),通常在一個(gè)程序段或子程序的入口指令語句選用標(biāo)號(hào),當(dāng)程序需要轉(zhuǎn)入這個(gè)程序段或的入口指令語句選用標(biāo)號(hào),當(dāng)程序需要轉(zhuǎn)入這個(gè)程序段或調(diào)用子程序時(shí),就可直接引用這標(biāo)號(hào)。標(biāo)號(hào)通常在代碼段調(diào)用子程序時(shí),就可直接引用這標(biāo)號(hào)。標(biāo)號(hào)通常在代碼段中定義,后面跟冒號(hào)中定義,后面跟冒號(hào)“:”,它經(jīng)常在轉(zhuǎn)移

6、指令或,它經(jīng)常在轉(zhuǎn)移指令或CALLCALL指指令中引用,用以表示轉(zhuǎn)向地址,引用時(shí)標(biāo)號(hào)后不跟冒號(hào)。令中引用,用以表示轉(zhuǎn)向地址,引用時(shí)標(biāo)號(hào)后不跟冒號(hào)。(2 2)指令助記符)指令助記符指令助記符為指令語句的核心,是不可省略的主要部分,指令助記符為指令語句的核心,是不可省略的主要部分,如如MOVMOV、ADDADD、XORXOR、RCLRCL等等,它表示指令語句要求等等,它表示指令語句要求CPUCPU完成完成的具體操作。的具體操作。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章(3 3)操作數(shù)操作數(shù) 操作數(shù)表示指令助記符的操作對(duì)象,不同的指令所帶操作數(shù)表示指令助記符的操

7、作對(duì)象,不同的指令所帶的操作數(shù)不同,有一個(gè)操作數(shù)的指令(如的操作數(shù)不同,有一個(gè)操作數(shù)的指令(如INCINC、NOTNOT等),等),有二個(gè)操作數(shù)的指令(如有二個(gè)操作數(shù)的指令(如ADDADD、XORXOR等),無操作數(shù)指令等),無操作數(shù)指令(如(如CLCCLC、STDSTD等)。等)。 若需要操作數(shù),則每一個(gè)操作數(shù)要依據(jù)尋址方式來表示。若需要操作數(shù),則每一個(gè)操作數(shù)要依據(jù)尋址方式來表示。操作數(shù)可以是常數(shù)、寄存器、標(biāo)號(hào)、變量和表達(dá)式。操作數(shù)可以是常數(shù)、寄存器、標(biāo)號(hào)、變量和表達(dá)式。(4) (4) 注釋注釋 注釋是用來說明一段程序或一條或多條指令的功能,它注釋是用來說明一段程序或一條或多條指令的功能,它

8、是可選項(xiàng),注釋均以分號(hào)是可選項(xiàng),注釋均以分號(hào)“;”開始,它可占一行或多行。開始,它可占一行或多行。注釋還通常用于調(diào)試程序。注釋是語句的非執(zhí)行部分,因注釋還通常用于調(diào)試程序。注釋是語句的非執(zhí)行部分,因此,它不出現(xiàn)在機(jī)器目標(biāo)代碼中,也不影響指令語句的功此,它不出現(xiàn)在機(jī)器目標(biāo)代碼中,也不影響指令語句的功能。能。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 2 2、偽指令語句、偽指令語句 偽指令語句指示匯編程序在匯編源程序時(shí)完成某些工作,偽指令語句指示匯編程序在匯編源程序時(shí)完成某些工作,比如完成數(shù)據(jù)定義、分配存儲(chǔ)區(qū)、指示程序結(jié)束等。比如完成數(shù)據(jù)定義、分配存儲(chǔ)區(qū)、指示程

9、序結(jié)束等。 偽指令屬于匯編控制命令,它所指示的操作是由匯編程偽指令屬于匯編控制命令,它所指示的操作是由匯編程序在匯編源程序時(shí)完成的,在匯編時(shí),它不產(chǎn)生目標(biāo)代碼,序在匯編源程序時(shí)完成的,在匯編時(shí),它不產(chǎn)生目標(biāo)代碼,在將源程序匯編成目標(biāo)程序后,它就不復(fù)存在了。在將源程序匯編成目標(biāo)程序后,它就不復(fù)存在了。 綜上所述可知,偽指令語句與指令語句的主要區(qū)別是:綜上所述可知,偽指令語句與指令語句的主要區(qū)別是:偽指令語句經(jīng)匯編后不產(chǎn)生機(jī)器目標(biāo)代碼,而指令語句經(jīng)偽指令語句經(jīng)匯編后不產(chǎn)生機(jī)器目標(biāo)代碼,而指令語句經(jīng)匯編后將產(chǎn)生相應(yīng)的機(jī)器目標(biāo)代碼;偽指令語句所指示的匯編后將產(chǎn)生相應(yīng)的機(jī)器目標(biāo)代碼;偽指令語句所指示的操

10、作是在程序匯編時(shí)完成的,而指令語句的操作必須在程操作是在程序匯編時(shí)完成的,而指令語句的操作必須在程序運(yùn)行時(shí)才能完成。一條偽指令語句也由四個(gè)字段組成,序運(yùn)行時(shí)才能完成。一條偽指令語句也由四個(gè)字段組成,其一般格式如下:其一般格式如下: 符號(hào)名符號(hào)名 偽指令符操作數(shù)偽指令符操作數(shù) ;注釋;注釋 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 (1 1)符號(hào)名)符號(hào)名 符號(hào)名在偽指令語句中是一個(gè)可選項(xiàng),符號(hào)名后面沒有符號(hào)名在偽指令語句中是一個(gè)可選項(xiàng),符號(hào)名后面沒有冒號(hào),符號(hào)名可以是常量名、變量名、過程名等。冒號(hào),符號(hào)名可以是常量名、變量名、過程名等。(2 2)偽指令符)

11、偽指令符偽指令符指定匯編程序要完成的具體操作,它是偽指令語偽指令符指定匯編程序要完成的具體操作,它是偽指令語句的核心部分,如數(shù)據(jù)定義偽指令句的核心部分,如數(shù)據(jù)定義偽指令DBDB、DWDW、DDDD,段定義偽指段定義偽指令令SEGMENTSEGMENT,定義過程偽指令定義過程偽指令PROCPROC等等。等等。(3 3)操作數(shù))操作數(shù) 偽指令中的操作數(shù)可以是常數(shù)、字符串、變量、表達(dá)式,偽指令中的操作數(shù)可以是常數(shù)、字符串、變量、表達(dá)式,其個(gè)數(shù)由具體的偽指令決定,各個(gè)操作數(shù)之間用其個(gè)數(shù)由具體的偽指令決定,各個(gè)操作數(shù)之間用“,”分隔。分隔。(4 4)注釋)注釋 偽指令語句的注釋也是可選項(xiàng),需要時(shí)必須以偽

12、指令語句的注釋也是可選項(xiàng),需要時(shí)必須以“;”開始。開始。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章3 3、標(biāo)識(shí)符、標(biāo)識(shí)符 指令語句中的標(biāo)號(hào)和偽指令語句中的符號(hào)名統(tǒng)稱為標(biāo)識(shí)指令語句中的標(biāo)號(hào)和偽指令語句中的符號(hào)名統(tǒng)稱為標(biāo)識(shí)符。它們由若干字符組成,標(biāo)識(shí)符的組成規(guī)則如下:符。它們由若干字符組成,標(biāo)識(shí)符的組成規(guī)則如下:(1 1)一個(gè)標(biāo)識(shí)符由)一個(gè)標(biāo)識(shí)符由1-31-3個(gè)字符組成。個(gè)字符組成。(2 2)組成標(biāo)識(shí)符的字符可以是字母()組成標(biāo)識(shí)符的字符可以是字母(A-ZA-Z或或a-za-z)、)、數(shù)數(shù)字(字(0-90-9)、專用字符()、專用字符(“?”、“”“”、“”“

13、”、“$”“$”、“下劃線下劃線_”_”)。)。(3 3)除數(shù)字外,上述其余字符均可作為標(biāo)識(shí)符的首字符,)除數(shù)字外,上述其余字符均可作為標(biāo)識(shí)符的首字符,“”“”只能作為標(biāo)識(shí)符的首字符。只能作為標(biāo)識(shí)符的首字符。(4 4)不能使用屬于系統(tǒng)的專用保留字。)不能使用屬于系統(tǒng)的專用保留字。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 4.34.3匯編語言數(shù)據(jù)與運(yùn)算符匯編語言數(shù)據(jù)與運(yùn)算符 匯編語言的指令語句和偽指令語句操作數(shù)一般為常量、匯編語言的指令語句和偽指令語句操作數(shù)一般為常量、變量、標(biāo)號(hào)、表達(dá)式。變量、標(biāo)號(hào)、表達(dá)式。1 1、常量、常量常量是沒有任何屬性的純數(shù)值,它的

14、值在匯編期間已能常量是沒有任何屬性的純數(shù)值,它的值在匯編期間已能完全確定,且在程序運(yùn)行中也不會(huì)發(fā)生變化。常量分為數(shù)值完全確定,且在程序運(yùn)行中也不會(huì)發(fā)生變化。常量分為數(shù)值常量、字符串常量和符號(hào)常量,它主要用于指令語句中的立常量、字符串常量和符號(hào)常量,它主要用于指令語句中的立即數(shù)或偽指令語句中給變量賦初值等。即數(shù)或偽指令語句中給變量賦初值等。(1 1)數(shù)值常量)數(shù)值常量數(shù)值常量分為整數(shù)和實(shí)數(shù)。數(shù)值常量分為整數(shù)和實(shí)數(shù)。例如:例如:1110001111100011B B ,45693 45693 ,0 0FF2AH FF2AH ,356703356703Q Q都是正都是正確的整數(shù)形式,確的整數(shù)形式,又

15、如:又如:543.567543.567,45.2345.23,1.21.2E E2 2,45.4E45.4E9 9都是正都是正確的實(shí)數(shù)形式。確的實(shí)數(shù)形式。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章(2 2)字符串常量)字符串常量字符串常量是用單引號(hào)括起來的一個(gè)字符或多個(gè)字符。字符串常量是用單引號(hào)括起來的一個(gè)字符或多個(gè)字符。字符串常量以單引號(hào)中各字符的字符串常量以單引號(hào)中各字符的ASCIIASCII碼形式存儲(chǔ)在內(nèi)存碼形式存儲(chǔ)在內(nèi)存中,如中,如HH,在內(nèi)存中就是在內(nèi)存中就是4141H H,1212就是就是3131H H,32H32H。使用時(shí)可在單引號(hào)內(nèi)直接寫字

16、符序列,如使用時(shí)可在單引號(hào)內(nèi)直接寫字符序列,如1212ABAB,也可也可寫字符的寫字符的ASCIIASCII碼,碼,ASCIIASCII碼之間用逗號(hào)分隔(此時(shí)不需要碼之間用逗號(hào)分隔(此時(shí)不需要用單引號(hào)),如用單引號(hào)),如3131H H,32H32H,41H41H,42H42H表示字符串表示字符串1212ABAB。 (3 3)符號(hào)常量符號(hào)常量符號(hào)常量是指用符號(hào)常量是指用EQUEQU偽指令或賦值語句偽指令或賦值語句“=”“=”定義過的符定義過的符號(hào)名,可作操作數(shù)項(xiàng)或在表達(dá)式中使用。號(hào)名,可作操作數(shù)項(xiàng)或在表達(dá)式中使用。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章2

17、 2、變量、變量在匯編語言中,變量是一個(gè)數(shù)據(jù)存儲(chǔ)單元的名稱,即數(shù)據(jù)在匯編語言中,變量是一個(gè)數(shù)據(jù)存儲(chǔ)單元的名稱,即數(shù)據(jù)存放地址的符號(hào)表示。它代表存放在某些存儲(chǔ)單元的數(shù)據(jù),存放地址的符號(hào)表示。它代表存放在某些存儲(chǔ)單元的數(shù)據(jù),這些數(shù)據(jù)在程序運(yùn)行期間隨時(shí)可以改變。為方便訪問變量,這些數(shù)據(jù)在程序運(yùn)行期間隨時(shí)可以改變。為方便訪問變量,在程序中通過變量名來使用變量。在程序中通過變量名來使用變量。(1 1)變量的定義)變量的定義 變量通常在數(shù)據(jù)段或附加段中使用數(shù)據(jù)定義偽指令來定義,變量通常在數(shù)據(jù)段或附加段中使用數(shù)據(jù)定義偽指令來定義,定義變量就是給數(shù)據(jù)分配存儲(chǔ)單元,有時(shí)為存儲(chǔ)單元賦予一定義變量就是給數(shù)據(jù)分配存儲(chǔ)

18、單元,有時(shí)為存儲(chǔ)單元賦予一個(gè)變量名,并可同時(shí)為這些存儲(chǔ)單元預(yù)置初值。數(shù)據(jù)定義偽個(gè)變量名,并可同時(shí)為這些存儲(chǔ)單元預(yù)置初值。數(shù)據(jù)定義偽指令的格式為:指令的格式為: 變量名變量名 DB(DWDB(DW、DDDD、DQDQ、DT) DT) 表達(dá)式表達(dá)式1 1,表達(dá)式,表達(dá)式2 2, 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章其中:變量名是可選項(xiàng),它僅代表所定義數(shù)據(jù)存儲(chǔ)區(qū)其中:變量名是可選項(xiàng),它僅代表所定義數(shù)據(jù)存儲(chǔ)區(qū)第一個(gè)單元的地址;第一個(gè)單元的地址;DBDB、DWDW、DDDD、DQDQ和和DTDT是偽指令符,具是偽指令符,具體一條數(shù)據(jù)定義偽指令取體一條數(shù)據(jù)定義偽指

19、令取5 5種之一。種之一。 DB DB定義的是字節(jié)類型的變量,每個(gè)表達(dá)式被分配定義的是字節(jié)類型的變量,每個(gè)表達(dá)式被分配1 1個(gè)字個(gè)字節(jié)單元。節(jié)單元。 DW DW定義的是字類型的變量,每一個(gè)表達(dá)式被分配定義的是字類型的變量,每一個(gè)表達(dá)式被分配1 1個(gè)字單個(gè)字單元(元(2 2個(gè)字節(jié))。個(gè)字節(jié))。 DD DD定義的是雙字類型的變量,每一個(gè)表達(dá)式被分配定義的是雙字類型的變量,每一個(gè)表達(dá)式被分配2 2個(gè)字個(gè)字單元(單元(4 4個(gè)字節(jié))。個(gè)字節(jié))。 DQ DQ定義的是四字類型的變量,每一個(gè)表達(dá)式被分配定義的是四字類型的變量,每一個(gè)表達(dá)式被分配4 4個(gè)字個(gè)字單元(單元(8 8個(gè)字節(jié))。個(gè)字節(jié))。 DT DT

20、定義的是十字節(jié)類型的變量,每一個(gè)表達(dá)式被分配定義的是十字節(jié)類型的變量,每一個(gè)表達(dá)式被分配1010個(gè)字節(jié)單元。個(gè)字節(jié)單元。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 表達(dá)式表達(dá)式1 1,表達(dá)式,表達(dá)式22是給變量或指定的存儲(chǔ)單元賦是給變量或指定的存儲(chǔ)單元賦予初值,它們有以下幾種形式:予初值,它們有以下幾種形式: (a a)數(shù)值表達(dá)式數(shù)值表達(dá)式 數(shù)據(jù)定義偽指令可以為一個(gè)或連續(xù)的存儲(chǔ)單元設(shè)置數(shù)數(shù)據(jù)定義偽指令可以為一個(gè)或連續(xù)的存儲(chǔ)單元設(shè)置數(shù)值初值。值初值。 (b b)字符串表達(dá)式字符串表達(dá)式 對(duì)于對(duì)于DBDB偽指令,字符串的長(zhǎng)度允許超過偽指令,字符串的長(zhǎng)度允許超過

21、2 2個(gè)字符,但不個(gè)字符,但不能超過能超過255255個(gè)字符,字符串必須用單引號(hào)括起來,它可為個(gè)字符,字符串必須用單引號(hào)括起來,它可為字符串中的每個(gè)字符分配字符串中的每個(gè)字符分配1 1字節(jié)單元,字符串從左至右以字節(jié)單元,字符串從左至右以字符的字符的ASCIIASCII碼形式按地址遞增的順序依次存放。碼形式按地址遞增的順序依次存放。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章(c c)?)?表達(dá)式表達(dá)式 不帶引號(hào)的?,用于為變量預(yù)留內(nèi)存單元,暫時(shí)不存入不帶引號(hào)的?,用于為變量預(yù)留內(nèi)存單元,暫時(shí)不存入數(shù)據(jù),即表示所定義的變量無確定的初值。數(shù)據(jù),即表示所定義的變量

22、無確定的初值。 例如:例如:A DW A DW ?,?,?為變量為變量A A預(yù)留預(yù)留2 2個(gè)字單元。個(gè)字單元。(d d)地址表達(dá)式地址表達(dá)式 操作數(shù)為地址表達(dá)式時(shí),只適用于操作數(shù)為地址表達(dá)式時(shí),只適用于DWDW和和DDDD這兩種數(shù)據(jù)定這兩種數(shù)據(jù)定義偽指令。如果地址表達(dá)式為一變量(標(biāo)號(hào))名,用義偽指令。如果地址表達(dá)式為一變量(標(biāo)號(hào))名,用DWDW偽偽指令則是取它的偏移地址來初始化變量;用指令則是取它的偏移地址來初始化變量;用DDDD偽指令則是偽指令則是取它的段首地址和偏移地址來初始化變量。取它的段首地址和偏移地址來初始化變量。(e e)帶帶DUPDUP的表達(dá)式的表達(dá)式格式為:格式為:n DUP

23、(n DUP (表達(dá)式表達(dá)式) ),其中,其中n n為重復(fù)因子,只能取正為重復(fù)因子,只能取正整數(shù),它表示定義了整數(shù),它表示定義了n n個(gè)數(shù)據(jù)存儲(chǔ)單元。個(gè)數(shù)據(jù)存儲(chǔ)單元。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 (2 2)變量的屬性)變量的屬性 由于存儲(chǔ)器是分段使用的,因而源程序定義的變量具有由于存儲(chǔ)器是分段使用的,因而源程序定義的變量具有3 3個(gè)屬性:個(gè)屬性:(a a)段屬性(段屬性(SEGSEG) 變量的段屬性是指定義變量時(shí)它所在段的段首地址。變量的段屬性是指定義變量時(shí)它所在段的段首地址。(b b)偏移屬性(偏移屬性(OFFSETOFFSET) 變量的偏移

24、屬性是指所在段的段首地址到定義該變量的變量的偏移屬性是指所在段的段首地址到定義該變量的位置之間的字節(jié)數(shù)(即偏移地址)。上述的段屬性和偏移位置之間的字節(jié)數(shù)(即偏移地址)。上述的段屬性和偏移屬性值就構(gòu)成了一個(gè)變量的邏輯地址。屬性值就構(gòu)成了一個(gè)變量的邏輯地址。(c c)類型屬性(類型屬性(TYPETYPE) 變量的類型屬性表示存儲(chǔ)變量時(shí)所占存儲(chǔ)單元的字節(jié)個(gè)變量的類型屬性表示存儲(chǔ)變量時(shí)所占存儲(chǔ)單元的字節(jié)個(gè)數(shù)。數(shù)。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章(3 3)變量的使用)變量的使用 定義后的變量,在程序中的引用有兩種情況:定義后的變量,在程序中的引用有兩種情況:

25、(a a)在指令語句中,采用存儲(chǔ)器操作數(shù)的幾種尋址方式,在指令語句中,采用存儲(chǔ)器操作數(shù)的幾種尋址方式,除寄存器間接尋址方式不使用變量名外,其余各種尋址方除寄存器間接尋址方式不使用變量名外,其余各種尋址方式均可使用變量名。式均可使用變量名。例如,某數(shù)據(jù)段已定義一變量例如,某數(shù)據(jù)段已定義一變量ARRAYARRAY: ARRAY DW 5000H ARRAY DW 5000H,4000H4000H (b b)在數(shù)據(jù)定義偽指令在數(shù)據(jù)定義偽指令DWDW和和DDDD中,操作數(shù)字段可直接引中,操作數(shù)字段可直接引用已定義過的變量名。用已定義過的變量名。 如:如: A DB 50HA DB 50H,40H40H

26、 B DW A B DW A C DD B C DD B匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章3 3、標(biāo)號(hào)、標(biāo)號(hào) 標(biāo)號(hào)是一條指令語句的符號(hào)地址,在匯編源程序中,只標(biāo)號(hào)是一條指令語句的符號(hào)地址,在匯編源程序中,只有在需要轉(zhuǎn)向一條指令語句時(shí),才為該指令語句設(shè)置標(biāo)號(hào),有在需要轉(zhuǎn)向一條指令語句時(shí),才為該指令語句設(shè)置標(biāo)號(hào),以便在控制轉(zhuǎn)移指令中直接引用這個(gè)標(biāo)號(hào)。標(biāo)號(hào)一般在代碼以便在控制轉(zhuǎn)移指令中直接引用這個(gè)標(biāo)號(hào)。標(biāo)號(hào)一般在代碼段中定義和引用。由于標(biāo)號(hào)代表了指令的符號(hào)地址,所以標(biāo)段中定義和引用。由于標(biāo)號(hào)代表了指令的符號(hào)地址,所以標(biāo)號(hào)也有號(hào)也有3 3個(gè)屬性:個(gè)屬性:(a

27、 a)段屬性(段屬性(SEGSEG)。)。標(biāo)號(hào)的段屬性是指標(biāo)號(hào)定義所在段的標(biāo)號(hào)的段屬性是指標(biāo)號(hào)定義所在段的段首地址。段首地址。(b b)偏移屬性(偏移屬性(OFFSETOFFSET)。)。標(biāo)號(hào)的偏移屬性是指標(biāo)號(hào)所在標(biāo)號(hào)的偏移屬性是指標(biāo)號(hào)所在段的段首地址到該標(biāo)號(hào)的字節(jié)距離。段的段首地址到該標(biāo)號(hào)的字節(jié)距離。(c c)類型屬性(類型屬性(TYPETYPE)。)。標(biāo)號(hào)的類型屬性表示了它的轉(zhuǎn)移標(biāo)號(hào)的類型屬性表示了它的轉(zhuǎn)移特性,即該標(biāo)號(hào)是作為段內(nèi)還是段間轉(zhuǎn)移(或調(diào)用)指令的特性,即該標(biāo)號(hào)是作為段內(nèi)還是段間轉(zhuǎn)移(或調(diào)用)指令的目標(biāo)地址。標(biāo)號(hào)的類型屬性有目標(biāo)地址。標(biāo)號(hào)的類型屬性有2 2種:種:NEARNEAR

28、類型和類型和FARFAR類型。類型。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 4 4、表達(dá)式和運(yùn)算符、表達(dá)式和運(yùn)算符匯編語言的指令語句和偽指令語句中,表達(dá)式是操作匯編語言的指令語句和偽指令語句中,表達(dá)式是操作數(shù)項(xiàng)的常見形式,表達(dá)式是由常量、變量、標(biāo)號(hào)用運(yùn)算數(shù)項(xiàng)的常見形式,表達(dá)式是由常量、變量、標(biāo)號(hào)用運(yùn)算符連接而成有意義的式子。表達(dá)式分為數(shù)值表達(dá)式和地符連接而成有意義的式子。表達(dá)式分為數(shù)值表達(dá)式和地址表達(dá)式,任一表達(dá)式的值只計(jì)算一次,表達(dá)式的計(jì)算址表達(dá)式,任一表達(dá)式的值只計(jì)算一次,表達(dá)式的計(jì)算是在源程序匯編過程中進(jìn)行的,而不是在程序運(yùn)行中進(jìn)是在源程序匯編過程

29、中進(jìn)行的,而不是在程序運(yùn)行中進(jìn)行的,匯編程序?qū)⒈磉_(dá)式計(jì)算后得到一個(gè)數(shù)值或一個(gè)地行的,匯編程序?qū)⒈磉_(dá)式計(jì)算后得到一個(gè)數(shù)值或一個(gè)地址。址。 在在80868086匯編語言中,運(yùn)算符分為:算術(shù)運(yùn)算符、邏輯匯編語言中,運(yùn)算符分為:算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、數(shù)值返回運(yùn)算符、屬性運(yùn)算符和運(yùn)算符、關(guān)系運(yùn)算符、數(shù)值返回運(yùn)算符、屬性運(yùn)算符和字節(jié)分離運(yùn)算符。字節(jié)分離運(yùn)算符。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章(1 1)數(shù)值表達(dá)式)數(shù)值表達(dá)式 數(shù)值表達(dá)式是由常量與算術(shù)運(yùn)算符、邏輯運(yùn)算符或關(guān)系數(shù)值表達(dá)式是由常量與算術(shù)運(yùn)算符、邏輯運(yùn)算符或關(guān)系運(yùn)算符構(gòu)成的有意義的式子。數(shù)

30、值表達(dá)式在匯編期間進(jìn)行運(yùn)算符構(gòu)成的有意義的式子。數(shù)值表達(dá)式在匯編期間進(jìn)行運(yùn)算,運(yùn)算結(jié)果為一數(shù)值常量,它只有大小而沒有屬性。運(yùn)算,運(yùn)算結(jié)果為一數(shù)值常量,它只有大小而沒有屬性。(2 2)地址表達(dá)式)地址表達(dá)式 地址表達(dá)式是由常量、變量、標(biāo)號(hào)、寄存器(地址表達(dá)式是由常量、變量、標(biāo)號(hào)、寄存器(BXBX、BPBP、SISI、DIDI)內(nèi)容(用寄存器名加方括號(hào)表示)和運(yùn)算符組成內(nèi)容(用寄存器名加方括號(hào)表示)和運(yùn)算符組成的有意義的式子。單個(gè)的變量、標(biāo)號(hào)、寄存器的內(nèi)容是地的有意義的式子。單個(gè)的變量、標(biāo)號(hào)、寄存器的內(nèi)容是地址表達(dá)式的特例。址表達(dá)式的特例。 地址表達(dá)式中可以使用算術(shù)運(yùn)算符中的地址表達(dá)式中可以使用算

31、術(shù)運(yùn)算符中的“+”“+”、“-”“-”運(yùn)運(yùn)算符和關(guān)系運(yùn)算符。算符和關(guān)系運(yùn)算符。 在地址表達(dá)式中,常用的形式是:變量常量。在地址表達(dá)式中,常用的形式是:變量常量。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 地址表達(dá)式除使用數(shù)值表達(dá)式的運(yùn)算符外,還可以使地址表達(dá)式除使用數(shù)值表達(dá)式的運(yùn)算符外,還可以使用特殊算符。用特殊算符。(a a)屬性運(yùn)算符屬性運(yùn)算符 屬性運(yùn)算符主要用于臨時(shí)修改變量、標(biāo)號(hào)或某個(gè)內(nèi)存單屬性運(yùn)算符主要用于臨時(shí)修改變量、標(biāo)號(hào)或某個(gè)內(nèi)存單元中的操作數(shù)的類型屬性。元中的操作數(shù)的類型屬性。 段超越前綴段超越前綴“:”。 其格式為:段寄存器名:地址表達(dá)式其

32、格式為:段寄存器名:地址表達(dá)式 或段名:地址表達(dá)式或段名:地址表達(dá)式 類型運(yùn)算符類型運(yùn)算符PTRPTR。 其使用格式為:類型其使用格式為:類型 PTR PTR 地址表達(dá)式地址表達(dá)式 根據(jù)地址表達(dá)式的不同值,類型可以是根據(jù)地址表達(dá)式的不同值,類型可以是BYTEBYTE、WORDWORD、DWORDDWORD、NEARNEAR、FARFAR等。等。 定義類型運(yùn)算符定義類型運(yùn)算符THISTHIS。 其格式為:標(biāo)識(shí)符其格式為:標(biāo)識(shí)符 EQU THIS EQU THIS 類型類型匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 (b b)數(shù)值返回運(yùn)算符數(shù)值返回運(yùn)算符 數(shù)值返

33、回運(yùn)算符有數(shù)值返回運(yùn)算符有5 5種,這些運(yùn)算符的運(yùn)算對(duì)象必須是變種,這些運(yùn)算符的運(yùn)算對(duì)象必須是變量或標(biāo)號(hào),其功能是分離出變量或標(biāo)號(hào)的段、偏移地址及量或標(biāo)號(hào),其功能是分離出變量或標(biāo)號(hào)的段、偏移地址及類型的屬性值,運(yùn)算結(jié)果為一數(shù)值常量。類型的屬性值,運(yùn)算結(jié)果為一數(shù)值常量。 SEGSEG運(yùn)算符運(yùn)算符 格式:格式:SEG SEG 變量或標(biāo)號(hào)變量或標(biāo)號(hào) 功能:分離出其后變量或標(biāo)號(hào)所在段的段首地址。功能:分離出其后變量或標(biāo)號(hào)所在段的段首地址。 OFFSET OFFSET運(yùn)算符運(yùn)算符 格式:格式:OFFSET OFFSET 變量或標(biāo)號(hào)變量或標(biāo)號(hào) 功能:分離出其后變量或標(biāo)號(hào)的偏移地址。功能:分離出其后變量或標(biāo)

34、號(hào)的偏移地址。 TYPE TYPE運(yùn)算符運(yùn)算符 格式:格式:TYPE TYPE 變量或標(biāo)號(hào)變量或標(biāo)號(hào) 功能:分離出其后變量或標(biāo)號(hào)的類型值。功能:分離出其后變量或標(biāo)號(hào)的類型值。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 LENGTH LENGTH運(yùn)算符運(yùn)算符 格式:格式:LENGTH LENGTH 變量變量 功能:取出變量所含的數(shù)據(jù)存儲(chǔ)單元個(gè)數(shù)。該運(yùn)算符只功能:取出變量所含的數(shù)據(jù)存儲(chǔ)單元個(gè)數(shù)。該運(yùn)算符只對(duì)變量起作用,它的取值根據(jù)定義該變量時(shí)數(shù)據(jù)定義偽指對(duì)變量起作用,它的取值根據(jù)定義該變量時(shí)數(shù)據(jù)定義偽指令后面第一個(gè)表達(dá)式的形式而定。如果第一個(gè)表達(dá)式為重令后面第一

35、個(gè)表達(dá)式的形式而定。如果第一個(gè)表達(dá)式為重復(fù)子句復(fù)子句“n nDUP DUP (表達(dá)式)表達(dá)式)”的形式,則取值為前面的重的形式,則取值為前面的重復(fù)因子復(fù)因子n n。如果為其它形式的表達(dá)式,則取值均為如果為其它形式的表達(dá)式,則取值均為1 1。 SIZE SIZE運(yùn)算符運(yùn)算符 格式:格式:SIZE SIZE 變量變量 功能:取出變量所含的數(shù)據(jù)存儲(chǔ)區(qū)的總字節(jié)數(shù)。其返回功能:取出變量所含的數(shù)據(jù)存儲(chǔ)區(qū)的總字節(jié)數(shù)。其返回值為該變量的值為該變量的LENGTHLENGTH值和值和TYPETYPE值的乘積,即:值的乘積,即:LENGTH LENGTH 變量變量 * * YTPE YTPE 變量。變量。匯編語言匯

36、編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 (c c)分離運(yùn)算符分離運(yùn)算符 分離高字節(jié)運(yùn)算符分離高字節(jié)運(yùn)算符HIGHHIGH。 格式:格式:HIGH HIGH 常量或地址表達(dá)式常量或地址表達(dá)式 功能:用來分離出其后功能:用來分離出其后1616位常量或地址表達(dá)式的偏移地位常量或地址表達(dá)式的偏移地址的高字節(jié)。址的高字節(jié)。 分離低字節(jié)運(yùn)算符分離低字節(jié)運(yùn)算符LOWLOW。 格式:格式:LOW LOW 常量或地址表達(dá)式常量或地址表達(dá)式 功能:用來分離出其后功能:用來分離出其后1616位常量或地址表達(dá)式的偏移地位常量或地址表達(dá)式的偏移地址的低字節(jié)。址的低字節(jié)。 (d d)其他運(yùn)算

37、符其他運(yùn)算符 SHORT SHORT運(yùn)算符:用于說明其后的標(biāo)號(hào)在短距離運(yùn)算符:用于說明其后的標(biāo)號(hào)在短距離 (-128-27-128-27之間)內(nèi)。之間)內(nèi)。 ()運(yùn)算符用于改變運(yùn)算的優(yōu)先級(jí)別。()運(yùn)算符用于改變運(yùn)算的優(yōu)先級(jí)別。 運(yùn)算符用于表示間接尋址。運(yùn)算符用于表示間接尋址。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 4.4 4.4 偽指令偽指令 偽指令又稱為偽操作,偽指令是匯編語言程序設(shè)計(jì)的一偽指令又稱為偽操作,偽指令是匯編語言程序設(shè)計(jì)的一個(gè)重要部分,由于匯編程序在匯編過程中無法區(qū)分源程序中個(gè)重要部分,由于匯編程序在匯編過程中無法區(qū)分源程序中的分段情況,哪

38、些是數(shù)據(jù),哪些是指令,也無法識(shí)別數(shù)據(jù)的的分段情況,哪些是數(shù)據(jù),哪些是指令,也無法識(shí)別數(shù)據(jù)的類型,以及源程序在哪結(jié)束,因此,類型,以及源程序在哪結(jié)束,因此,8080X86X86宏匯編語言提供宏匯編語言提供了多種偽指令,它主要告訴匯編程序如何正確地將匯編源程了多種偽指令,它主要告訴匯編程序如何正確地將匯編源程序匯編成目標(biāo)程序。序匯編成目標(biāo)程序。 1、數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令常用的數(shù)據(jù)定義偽指令有常用的數(shù)據(jù)定義偽指令有DBDB、DWDW、DDDD、DQDQ、DTDT。格式:格式: 變量變量 數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令 表達(dá)式表達(dá)式 ,表達(dá)式,表達(dá)式,功能:定義數(shù)據(jù)存儲(chǔ)區(qū),類型由數(shù)據(jù)定義偽指令確

39、定,初功能:定義數(shù)據(jù)存儲(chǔ)區(qū),類型由數(shù)據(jù)定義偽指令確定,初值由表達(dá)式給定。值由表達(dá)式給定。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 2 2、符號(hào)定義偽指令、符號(hào)定義偽指令符號(hào)定義偽指令用于為程序中多次出現(xiàn)的同一個(gè)常量或符號(hào)定義偽指令用于為程序中多次出現(xiàn)的同一個(gè)常量或表達(dá)式定義為一個(gè)標(biāo)識(shí)符,以便在源程序中以標(biāo)識(shí)符來代表達(dá)式定義為一個(gè)標(biāo)識(shí)符,以便在源程序中以標(biāo)識(shí)符來代替對(duì)應(yīng)的常量或表達(dá)式。符號(hào)定義偽指令有以下兩種。替對(duì)應(yīng)的常量或表達(dá)式。符號(hào)定義偽指令有以下兩種。(1 1)等價(jià)偽指令)等價(jià)偽指令EQUEQU 格式:符號(hào)名格式:符號(hào)名 EQU EQU 表達(dá)式表達(dá)式

40、 功能:為常量或表達(dá)式及其它各種符號(hào)定義一個(gè)等價(jià)的功能:為常量或表達(dá)式及其它各種符號(hào)定義一個(gè)等價(jià)的 符號(hào)名,但它不申請(qǐng)分配存儲(chǔ)單元。符號(hào)名,但它不申請(qǐng)分配存儲(chǔ)單元。 說明:說明: 表達(dá)式可以是常量或數(shù)值表達(dá)式;地址表達(dá)式;變表達(dá)式可以是常量或數(shù)值表達(dá)式;地址表達(dá)式;變量、標(biāo)號(hào)或指令助記符。量、標(biāo)號(hào)或指令助記符。 符號(hào)名不占存儲(chǔ)單元,沒有段、偏移和類型符號(hào)名不占存儲(chǔ)單元,沒有段、偏移和類型3 3種屬性種屬性 在同一源程序中,使用在同一源程序中,使用EQUEQU定義的符號(hào)不能與本程序定義的符號(hào)不能與本程序中的其它符號(hào)名同名;另外,同一符號(hào)不能用中的其它符號(hào)名同名;另外,同一符號(hào)不能用EQUEQU偽

41、指令重偽指令重新定義。新定義。匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 EQUEQU偽指令主要有以下偽指令主要有以下3 3方面應(yīng)用:方面應(yīng)用: 定義符號(hào)常量。用符號(hào)名表示常量、數(shù)值表達(dá)式。定義符號(hào)常量。用符號(hào)名表示常量、數(shù)值表達(dá)式。 EQU EQU與屬性運(yùn)算符與屬性運(yùn)算符PTRPTR或或THISTHIS連用,可以給變量或標(biāo)號(hào)連用,可以給變量或標(biāo)號(hào)定義新的類型屬性并重新命名。但其段屬性和偏移屬性不定義新的類型屬性并重新命名。但其段屬性和偏移屬性不變。變。 利用利用EQUEQU可以用一個(gè)符號(hào)名替代一個(gè)復(fù)雜的地址表可以用一個(gè)符號(hào)名替代一個(gè)復(fù)雜的地址表達(dá)式和其它一

42、些符號(hào)達(dá)式和其它一些符號(hào) ,如指令助記符、變量名、標(biāo)號(hào)、段,如指令助記符、變量名、標(biāo)號(hào)、段名、寄存器名、宏定義名等。名、寄存器名、宏定義名等。 (2 2)等號(hào)偽指令)等號(hào)偽指令 格式:符號(hào)名格式:符號(hào)名 = = 表達(dá)式表達(dá)式 功能:該語句的功能與功能:該語句的功能與EQUEQU語句類似,不同的是等號(hào)偽語句類似,不同的是等號(hào)偽指令能對(duì)所定義的符號(hào)名多次重新定義,且以最后一次定指令能對(duì)所定義的符號(hào)名多次重新定義,且以最后一次定義的值為準(zhǔn)。義的值為準(zhǔn)。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 3 3、段結(jié)構(gòu)偽指令段結(jié)構(gòu)偽指令編制一個(gè)編制一個(gè)8080X86X86

43、匯編語言源程序,段是基礎(chǔ),這有兩方面匯編語言源程序,段是基礎(chǔ),這有兩方面含義:一是必須按段來構(gòu)造程序,二是在程序執(zhí)行時(shí),要憑含義:一是必須按段來構(gòu)造程序,二是在程序執(zhí)行時(shí),要憑借四個(gè)段寄存器對(duì)各個(gè)段的存儲(chǔ)單元進(jìn)行訪問。段結(jié)構(gòu)偽指借四個(gè)段寄存器對(duì)各個(gè)段的存儲(chǔ)單元進(jìn)行訪問。段結(jié)構(gòu)偽指令主要有兩條語句,即段定義偽指令和假定偽指令。令主要有兩條語句,即段定義偽指令和假定偽指令。(1 1)段定義偽指令)段定義偽指令SEGMENT/ ENDSSEGMENT/ ENDS格式:段名格式:段名 SEGMENT SEGMENT 定位類型定位類型 組合類型組合類型 類別類別 段體段體 段名段名 ENDSENDS功能

44、:定義一個(gè)邏輯段,指定段的名字和范圍,段在內(nèi)存功能:定義一個(gè)邏輯段,指定段的名字和范圍,段在內(nèi)存中的起始位置、段與段之間的連接關(guān)系。中的起始位置、段與段之間的連接關(guān)系。說明:說明: 段名由用戶指定,開始與結(jié)束的段名須一致。段名由用戶指定,開始與結(jié)束的段名須一致。 SEGMENT/ ENDSSEGMENT/ ENDS偽指令把程序分成若干邏輯段。偽指令把程序分成若干邏輯段。 刪節(jié)號(hào)為段體,段體內(nèi)為指令和偽指令序列。刪節(jié)號(hào)為段體,段體內(nèi)為指令和偽指令序列。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 (2 2)假定偽指令)假定偽指令A(yù)SSUMEASSUME假定偽指

45、令主要用于指示匯編程序哪些段是當(dāng)前段以及這假定偽指令主要用于指示匯編程序哪些段是當(dāng)前段以及這些段與段寄存器之間的對(duì)應(yīng)關(guān)系。些段與段寄存器之間的對(duì)應(yīng)關(guān)系。格式格式: :ASSUME ASSUME 段寄存器名段寄存器名: :段名段名,段寄存器名段寄存器名: :段名段名, , 其中,段名是指用其中,段名是指用SEGMENT/ ENDSSEGMENT/ ENDS語句已定義的段名,也可語句已定義的段名,也可以是表達(dá)式以是表達(dá)式“SEG SEG 變量或標(biāo)號(hào)變量或標(biāo)號(hào)”,或者是關(guān)鍵字,或者是關(guān)鍵字NOTHINGNOTHING;段段寄存器名可為寄存器名可為CSCS、DSDS、SSSS、ESES四者之一。四者之

46、一。功能:該語句一般出現(xiàn)在代碼段中,用來設(shè)定段寄存器與段功能:該語句一般出現(xiàn)在代碼段中,用來設(shè)定段寄存器與段之間的對(duì)應(yīng)關(guān)系,以便匯編程序知道段的結(jié)構(gòu)和在執(zhí)行各種之間的對(duì)應(yīng)關(guān)系,以便匯編程序知道段的結(jié)構(gòu)和在執(zhí)行各種指令時(shí)知道應(yīng)訪問哪個(gè)段;也可用來取消段寄存器與段之間指令時(shí)知道應(yīng)訪問哪個(gè)段;也可用來取消段寄存器與段之間的對(duì)應(yīng)關(guān)系(使用的對(duì)應(yīng)關(guān)系(使用NOTHINGNOTHING時(shí))。時(shí))。說明:說明: ASSUMEASSUME偽指令設(shè)置在代碼段內(nèi),第一個(gè)偽指令設(shè)置在代碼段內(nèi),第一個(gè)ASSUMEASSUME語句一般放語句一般放在段定義語句之后,是說明性語句。在段定義語句之后,是說明性語句。 匯編語言

47、匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 在一個(gè)代碼段中,如果沒有另外的在一個(gè)代碼段中,如果沒有另外的ASSUMEASSUME偽指令重偽指令重新設(shè)置,原有新設(shè)置,原有ASSUMEASSUME語句的設(shè)置一直有效。語句的設(shè)置一直有效。 不在當(dāng)前段中的變量和數(shù)據(jù)存儲(chǔ)單元均是不可訪問不在當(dāng)前段中的變量和數(shù)據(jù)存儲(chǔ)單元均是不可訪問的,否則,會(huì)在匯編時(shí)產(chǎn)生錯(cuò)誤或運(yùn)行時(shí)造成混亂,產(chǎn)生邏的,否則,會(huì)在匯編時(shí)產(chǎn)生錯(cuò)誤或運(yùn)行時(shí)造成混亂,產(chǎn)生邏輯上的錯(cuò)誤,得出錯(cuò)誤結(jié)果。輯上的錯(cuò)誤,得出錯(cuò)誤結(jié)果。 ASSUMEASSUME偽指令不產(chǎn)生任何目標(biāo)代碼,它僅僅是告訴匯偽指令不產(chǎn)生任何目標(biāo)代碼,它

48、僅僅是告訴匯編程序,哪些段是當(dāng)前段,而且它們分別由哪個(gè)段寄存器指編程序,哪些段是當(dāng)前段,而且它們分別由哪個(gè)段寄存器指向。向。 匯編程序不能檢查在程序運(yùn)行期間段寄存器內(nèi)容是否匯編程序不能檢查在程序運(yùn)行期間段寄存器內(nèi)容是否與上述與上述ASSUMEASSUME語句的設(shè)置一致。如果在程序中間用語句的設(shè)置一致。如果在程序中間用ASSUMEASSUME語語句重建了句重建了DSDS或或ESES與某段的關(guān)系時(shí),就一定要緊跟著將這個(gè)新與某段的關(guān)系時(shí),就一定要緊跟著將這個(gè)新段首地址送入段首地址送入DSDS或或ESES中,否則,會(huì)因段寄存器的內(nèi)容未更改中,否則,會(huì)因段寄存器的內(nèi)容未更改而使得后面數(shù)據(jù)的讀寫仍在原來的

49、數(shù)據(jù)段中進(jìn)行,這樣的錯(cuò)而使得后面數(shù)據(jù)的讀寫仍在原來的數(shù)據(jù)段中進(jìn)行,這樣的錯(cuò)誤,系統(tǒng)是檢查不出來的,即出現(xiàn)邏輯錯(cuò)誤。誤,系統(tǒng)是檢查不出來的,即出現(xiàn)邏輯錯(cuò)誤。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 4 4、源程序開始和結(jié)束偽指令源程序開始和結(jié)束偽指令 (1 1)源程序開始偽指令)源程序開始偽指令 在源程序開始處可以用在源程序開始處可以用NAMENAME或或TITLETITLE為模塊取名字。為模塊取名字。 NAMENAME偽指令偽指令 格式:格式:NAME NAME 模塊名模塊名 匯編程序?qū)⒁越o出的匯編程序?qū)⒁越o出的“模塊名模塊名”作為模塊的名字。作為模塊的

50、名字。 TITLETITLE偽指令偽指令 如果程序中沒有如果程序中沒有NAMENAME偽指令,則也可使用偽指令,則也可使用TITLETITLE偽指令。偽指令。 格式:格式:TITLE textTITLE text TITLE TITLE偽指令可指定每一頁上打印的標(biāo)題。同時(shí),若程序中偽指令可指定每一頁上打印的標(biāo)題。同時(shí),若程序中沒有沒有NAMENAME偽指令,則匯編程序?qū)⒂脗沃噶睿瑒t匯編程序?qū)⒂胻ext text 中的前中的前6 6個(gè)字符作為個(gè)字符作為模塊名。模塊名。texttext最多可有最多可有6060個(gè)字符。個(gè)字符。 若程序中既無若程序中既無NAMENAME又無又無TITLETITLE偽指

51、令,則將用源程序名作為偽指令,則將用源程序名作為模塊名。所以模塊名。所以NAMENAME及及TITLETITLE偽指令并不是必要的,但一般常使偽指令并不是必要的,但一般常使用用TITLETITLE,以便在列表文件中能打印出標(biāo)題來。以便在列表文件中能打印出標(biāo)題來。 匯編語言匯編語言淮南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章 (2 2)源程序結(jié)束偽指令源程序結(jié)束偽指令格式:格式:END END 地址表達(dá)式地址表達(dá)式 功能:該語句為源程序的最后一個(gè)語句,用以標(biāo)志整功能:該語句為源程序的最后一個(gè)語句,用以標(biāo)志整個(gè)程序的結(jié)束,即告訴匯編程序匯編工作到此個(gè)程序的結(jié)束,即告訴匯編程序匯編

52、工作到此結(jié)束。結(jié)束。其中,地址表達(dá)式為可選項(xiàng),若選用地址表達(dá)式,則其中,地址表達(dá)式為可選項(xiàng),若選用地址表達(dá)式,則表示此程序是主程序,它可以單獨(dú)執(zhí)行,其地址表達(dá)式表示此程序是主程序,它可以單獨(dú)執(zhí)行,其地址表達(dá)式為該程序的啟動(dòng)地址,即程序開始運(yùn)行的第一條指令的為該程序的啟動(dòng)地址,即程序開始運(yùn)行的第一條指令的地址,例如,地址,例如,“ENDENDSTART”START”,此此STARTSTART是第一條指令的是第一條指令的標(biāo)號(hào);若不選用表達(dá)式,則說明此程序?yàn)橐蛔映绦?,不?biāo)號(hào);若不選用表達(dá)式,則說明此程序?yàn)橐蛔映绦?,不能單?dú)運(yùn)行,只能被其它程序調(diào)用。能單獨(dú)運(yùn)行,只能被其它程序調(diào)用。 匯編語言匯編語言淮

53、南師范學(xué)院重點(diǎn)課程淮南師范學(xué)院重點(diǎn)課程匯編語言程序設(shè)計(jì)第4章5 5、定位偽指令、定位偽指令ORGORG與匯編地址計(jì)數(shù)器(與匯編地址計(jì)數(shù)器($ $) 匯編程序在匯編源程序時(shí),每遇到一新段,就為該段匯編程序在匯編源程序時(shí),每遇到一新段,就為該段設(shè)置一個(gè)初值為設(shè)置一個(gè)初值為0 0的匯編地址計(jì)數(shù)器,匯編程序使用匯編的匯編地址計(jì)數(shù)器,匯編程序使用匯編地址計(jì)數(shù)器記載正在匯編的數(shù)據(jù)或指令的目標(biāo)代碼在當(dāng)前地址計(jì)數(shù)器記載正在匯編的數(shù)據(jù)或指令的目標(biāo)代碼在當(dāng)前段內(nèi)的偏移地址。段內(nèi)的偏移地址。 當(dāng)前匯編地址計(jì)數(shù)器的值可用符號(hào)當(dāng)前匯編地址計(jì)數(shù)器的值可用符號(hào)$ $表示,用戶可在程表示,用戶可在程序中直接使用序中直接使用$ $,表示引用當(dāng)前匯編地址計(jì)數(shù)器的值。例,表示引用當(dāng)前匯編地址計(jì)數(shù)器的值。例如:如: ARRAY DW 4000HARRAY DW 4000H,5000H5000H,6000H6000H COUNT EQU COUNT EQU ($ - ARRAY$ - ARRAY)/ 2 / 2 匯編地址計(jì)數(shù)器的值可以用定位偽指令匯編地址計(jì)數(shù)器的值可以用定位偽指令ORGORG設(shè)置。設(shè)置。 ORG ORG偽指令格式:偽指令格式: ORG ORG 數(shù)值表達(dá)式數(shù)值表達(dá)式 功

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論