第4章_2基本語(yǔ)法(2)_第1頁(yè)
第4章_2基本語(yǔ)法(2)_第2頁(yè)
第4章_2基本語(yǔ)法(2)_第3頁(yè)
第4章_2基本語(yǔ)法(2)_第4頁(yè)
第4章_2基本語(yǔ)法(2)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四章第四章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)格式格式:符號(hào)符號(hào) EQU 表達(dá)式表達(dá)式功能功能:將表達(dá)式的值賦給:將表達(dá)式的值賦給EQU左邊的符號(hào)。表達(dá)式可以是常量、變量、標(biāo)左邊的符號(hào)。表達(dá)式可以是常量、變量、標(biāo)號(hào)、數(shù)值或地址表達(dá)式。在程序中使用這里定義的符號(hào)名,則在匯號(hào)、數(shù)值或地址表達(dá)式。在程序中使用這里定義的符號(hào)名,則在匯編后將代換成表達(dá)式計(jì)算的實(shí)際數(shù)值。編后將代換成表達(dá)式計(jì)算的實(shí)際數(shù)值。說(shuō)明說(shuō)明:EQU指令定義的符號(hào)是不可以被再定義的,除非使用指令定義的符號(hào)是不可以被再定義的,除非使用PURGE偽指?jìng)沃噶顚⒋硕x撤銷(xiāo)后重新定義。令將此定義撤銷(xiāo)后重新定義。如:某程序段包含以下兩條指令如:某

2、程序段包含以下兩條指令NUMEQU 20 NUMEQU 30NUMEQU 20 PURGE NUMNUMEQU 30格式格式:符號(hào)符號(hào) 表達(dá)式表達(dá)式功能功能:與:與EQU偽指令的功能完全相同偽指令的功能完全相同說(shuō)明說(shuō)明:與:與EQU指令的區(qū)別在于用指令的區(qū)別在于用“”定義的符號(hào)可被再定義,即允許修定義的符號(hào)可被再定義,即允許修改,使用更加方便靈活,但也增加了風(fēng)險(xiǎn)改,使用更加方便靈活,但也增加了風(fēng)險(xiǎn)。如:某程序段包含以下兩條指令如:某程序段包含以下兩條指令NUM 20 NUM 30 在匯編語(yǔ)言程序設(shè)計(jì)中,需要將存儲(chǔ)器分成若干段。段定義偽指令有在匯編語(yǔ)言程序設(shè)計(jì)中,需要將存儲(chǔ)器分成若干段。段定義偽

3、指令有SEGMENT、ENDS、ASSUME和和ORG等。等。 u 定位方式定位方式:說(shuō)明該段的起始地址邊界規(guī)則說(shuō)明該段的起始地址邊界規(guī)則PAGE指定起始地址的低指定起始地址的低8位是位是0,稱(chēng)頁(yè)邊界,稱(chēng)頁(yè)邊界XXXX XXXX XXXX 0000 0000BPARA指定起始地址的低指定起始地址的低4位是位是0,稱(chēng)段邊界,稱(chēng)段邊界(缺省)(缺?。XXX XXXX XXXX XXXX 0000BWORD指定起始地址的低指定起始地址的低2位是位是0,稱(chēng)字邊界,稱(chēng)字邊界XXXX XXXX XXXX XXXX XX00BBYTE指定起始地址為任意值。指定起始地址為任意值。XXXX XXXX XXXX

4、 XXXX XXXXB(PARA缺省方式下可以省略)缺省方式下可以省略)u 組合方式組合方式:連接程序時(shí)設(shè)定本段與其它同名段的連接方式,適用于模塊:連接程序時(shí)設(shè)定本段與其它同名段的連接方式,適用于模塊化程序設(shè)計(jì)化程序設(shè)計(jì)PUBLIC同名段依次連接起來(lái),形成一個(gè)連續(xù)的段。同名段依次連接起來(lái),形成一個(gè)連續(xù)的段。COMMON同名段共用同一起始地址,相互重疊段的長(zhǎng)度,取最同名段共用同一起始地址,相互重疊段的長(zhǎng)度,取最長(zhǎng)段的長(zhǎng)度長(zhǎng)段的長(zhǎng)度AT 表達(dá)式表達(dá)式定位在表達(dá)式所指定的段地址定位在表達(dá)式所指定的段地址(代碼段例外)(代碼段例外)STACK同名段構(gòu)成一個(gè)連續(xù)的堆棧段,自動(dòng)初始化同名段構(gòu)成一個(gè)連續(xù)的堆

5、棧段,自動(dòng)初始化SP。MEMORY表示本段定位在所有段的地址之上,高地址處。表示本段定位在所有段的地址之上,高地址處。無(wú)(無(wú)(NONE)不與任何段相連,各段有獨(dú)立段基址不與任何段相連,各段有獨(dú)立段基址(缺省方式)(缺省方式)u 類(lèi)別名類(lèi)別名:用單引號(hào)括起來(lái)的字符串。:用單引號(hào)括起來(lái)的字符串。 類(lèi)別名不超過(guò)類(lèi)別名不超過(guò)40個(gè)字符,用于控制段的存放次序。個(gè)字符,用于控制段的存放次序。MASM將所有類(lèi)別名將所有類(lèi)別名相同的邏輯段按上述組合方式進(jìn)行連接。相同的邏輯段按上述組合方式進(jìn)行連接?!纠緿ATA SEGMENT PARA PUBLIC DATASEGDATAENDSSTAKSEGMENT S

6、TACKSTAKENDS定義了三個(gè)段,段名分別為定義了三個(gè)段,段名分別為DATA、STACK、CODE。CODE SEGMENT CODESEGCODE ENDS 段分配偽指令用來(lái)完成邏輯段與段寄存器的分配。段分配偽指令用來(lái)完成邏輯段與段寄存器的分配。格式格式:ASSUME 段寄存器:段名段寄存器:段名,段寄存器:段名,段寄存器:段名,功能功能:說(shuō)明源程序中定義的邏輯段由哪個(gè)段寄存器去尋址。段寄存器可以:說(shuō)明源程序中定義的邏輯段由哪個(gè)段寄存器去尋址。段寄存器可以是是CS,SS,DS,ES。說(shuō)明說(shuō)明:ASSUME是偽指令,是語(yǔ)言中的關(guān)鍵字,不可省缺;段寄存器名后是偽指令,是語(yǔ)言中的關(guān)鍵字,不可省

7、缺;段寄存器名后面須有冒號(hào)。如果分配的段名不止一個(gè),則應(yīng)用逗號(hào)分開(kāi)。段名應(yīng)面須有冒號(hào)。如果分配的段名不止一個(gè),則應(yīng)用逗號(hào)分開(kāi)。段名應(yīng)是用是用SEGMENT/ENDS偽指令定義過(guò)的段名。偽指令定義過(guò)的段名。ASSUME語(yǔ)句放在代碼段內(nèi),作為代碼段的第一條指令。語(yǔ)句放在代碼段內(nèi),作為代碼段的第一條指令。ASSUME語(yǔ)句只是將邏輯段與段寄存器關(guān)聯(lián)起來(lái),并沒(méi)有給段寄存語(yǔ)句只是將邏輯段與段寄存器關(guān)聯(lián)起來(lái),并沒(méi)有給段寄存器賦值。段寄存器的賦值應(yīng)在程序中用指令顯式指定。器賦值。段寄存器的賦值應(yīng)在程序中用指令顯式指定。DATASEGMENT;定義一個(gè)名為定義一個(gè)名為DATA的邏輯段的邏輯段 VAR1 DB 0

8、0H,11H,22H,33H;定義字節(jié)型變量定義字節(jié)型變量VAR1DATAENDS;邏輯段邏輯段DATA結(jié)束結(jié)束STAKSEGMENT STACK ;定義一個(gè)名為定義一個(gè)名為STAK的堆棧段的堆棧段 DW100 DUP(0);段長(zhǎng)度為段長(zhǎng)度為100字字STAKENDS;STAK段結(jié)束段結(jié)束CODESEGMENT;定義一個(gè)名為定義一個(gè)名為CODE的邏輯段的邏輯段ASSUME CS:CODE,DS:DATA,SS:STAK;對(duì)各段進(jìn)行段寄存器分配對(duì)各段進(jìn)行段寄存器分配START:MOVAX,DATA;CODE段內(nèi)程序段內(nèi)程序CODEENDS;CODE段結(jié)束段結(jié)束ENDSTART (1)CS的裝入的

9、裝入 CS和和IP用于指向程序中即將執(zhí)行的指令地址,由匯編程序負(fù)責(zé)裝入,但用于指向程序中即將執(zhí)行的指令地址,由匯編程序負(fù)責(zé)裝入,但需要在編程時(shí)在代碼段第一行加入一個(gè)標(biāo)號(hào),并在最后一行用需要在編程時(shí)在代碼段第一行加入一個(gè)標(biāo)號(hào),并在最后一行用END偽指令偽指令結(jié)束該標(biāo)號(hào)。結(jié)束該標(biāo)號(hào)。 CODE SEGMENT;定義邏輯段定義邏輯段CODE ASSUME CS:CODE, ;分配段寄存器分配段寄存器START:;定義標(biāo)號(hào)定義標(biāo)號(hào)START CODE ENDS;CODE段結(jié)束段結(jié)束 ENDSTART;定義標(biāo)號(hào)定義標(biāo)號(hào)START結(jié)束結(jié)束 (2)DS、ES的裝入的裝入 DS、ES的裝入方式相同,即直接將段

10、基址通過(guò)通用寄存器裝入段寄存器。的裝入方式相同,即直接將段基址通過(guò)通用寄存器裝入段寄存器。DATAlSEGMENT ;定義邏輯段定義邏輯段DATA1 DATAl ENDSDATA2 SEGMENT;定義邏輯段定義邏輯段DATA2 DATA2 ENDSCODESEGMENT;定義邏輯段定義邏輯段CODEASSUME CS:CODE,DS:DATAl,ES:DATA2 ;分配段寄存器分配段寄存器START:;CODE段值將自動(dòng)存入段值將自動(dòng)存入CSMOVAX,DATAlMOVDS,AX ;將將DATA1段基址裝入段基址裝入DSMOVAX,DATA2MOVES,AX ;將將DATA2段基址裝入段基址

11、裝入ES CODEENDS END START(3)SS的裝入的裝入 SS段寄存器的裝入有兩種方法。段寄存器的裝入有兩種方法。 在段定義時(shí)將組合方式定義為在段定義時(shí)將組合方式定義為STACK,并在,并在ASSUME語(yǔ)句中,將堆棧語(yǔ)句中,將堆棧段分配給段寄存器段分配給段寄存器SS。匯編程序?qū)⒃摱褩6蔚幕纷詣?dòng)裝入到。匯編程序?qū)⒃摱褩6蔚幕纷詣?dòng)裝入到SS段寄存器中。段寄存器中。SACKSEGMENT STACK DW 100 DUP(?)SACKENDSCODE SEGMENT ASSUME CS:CODE,SS:SACK;自動(dòng)裝入自動(dòng)裝入SS ,SPSACK2 SEGMENT DW100DUP

12、(?)TOPLEBEL WORDSACK2 ENDSCODE SEGMENTASSUME CS:CODE,SS:SACK2START:MOVAX,SACK2MOVSS,AX;裝入裝入SSMOVSP,OFFSET TOP;裝入裝入SP 如果在段定義偽指令的組合類(lèi)型中未選用如果在段定義偽指令的組合類(lèi)型中未選用“STACK”參數(shù),則可用程序參數(shù),則可用程序?qū)崿F(xiàn)對(duì)實(shí)現(xiàn)對(duì)SS和和SP的裝入。的裝入。在程序設(shè)計(jì)中,常把具有一定功能的程序段設(shè)計(jì)成一個(gè)子程序,或稱(chēng)為過(guò)在程序設(shè)計(jì)中,常把具有一定功能的程序段設(shè)計(jì)成一個(gè)子程序,或稱(chēng)為過(guò)程。程。 格式格式: 過(guò)程名過(guò)程名 PROC NEAR/FAR RET 過(guò)程名過(guò)

13、程名 ENDP功能功能:定義一個(gè)過(guò)程,名字由:定義一個(gè)過(guò)程,名字由“過(guò)程名過(guò)程名”指定指定說(shuō)明說(shuō)明:過(guò)程名不可省缺,其命名規(guī)則同標(biāo)識(shí)符。過(guò)程的開(kāi)始(過(guò)程名不可省缺,其命名規(guī)則同標(biāo)識(shí)符。過(guò)程的開(kāi)始(PROC)和結(jié)束(和結(jié)束(ENDP)應(yīng)使用同一個(gè)過(guò)程名。)應(yīng)使用同一個(gè)過(guò)程名。NEAR表示近過(guò)程,表示近過(guò)程,F(xiàn)AR表示遠(yuǎn)過(guò)程,缺省為表示遠(yuǎn)過(guò)程,缺省為NEAR。AddProc PROC NEARXOR AX,AX ADD AX,SIADD AX,SI2RETAddProc ENDP(1)LABEL偽指令偽指令 LABEL偽指令用于給已定義的變量或標(biāo)號(hào)取一個(gè)別名,并可重新定義它的偽指令用于給已定義的變

14、量或標(biāo)號(hào)取一個(gè)別名,并可重新定義它的類(lèi)型或距離屬性。類(lèi)型或距離屬性。 格式格式: 名稱(chēng)名稱(chēng) LABEL 類(lèi)型類(lèi)型/距離距離別名功能:別名功能:VARBLABEL BYTEVARWDW 1234H,5678H改變調(diào)用距離:改變調(diào)用距離:FNEXTLABEL FARNEXT:MOVAX,BX(2)屬性指定操作偽指令()屬性指定操作偽指令(THIS) 格式格式: THIS 類(lèi)型類(lèi)型 功能功能:用來(lái)給后續(xù)數(shù)據(jù)定義新的類(lèi)型。:用來(lái)給后續(xù)數(shù)據(jù)定義新的類(lèi)型。(3)定位偽指令)定位偽指令(ORG)和當(dāng)前位置計(jì)數(shù)器和當(dāng)前位置計(jì)數(shù)器($) 在匯編程序時(shí),為了指示程序中指令或數(shù)據(jù)在相應(yīng)段中的偏移地址,可使在匯編程序

15、時(shí),為了指示程序中指令或數(shù)據(jù)在相應(yīng)段中的偏移地址,可使用定位偽指令和當(dāng)前位置計(jì)數(shù)器。用定位偽指令和當(dāng)前位置計(jì)數(shù)器。 定位偽指令定位偽指令ORG 格式格式: ORG 表達(dá)式表達(dá)式 功能功能:指定后續(xù)代碼或數(shù)據(jù)的起始(偏移)地址。指定后續(xù)代碼或數(shù)據(jù)的起始(偏移)地址。 DATA SEGMENTORG1000HVAR1 DB 00H,10H,20H,30HORG 2000HVAR2DW 10 DUP(?)(?)DATA ENDS VARB EQUTHIS BYTEVARW DW1234H,5678H 當(dāng)前位置計(jì)數(shù)器當(dāng)前位置計(jì)數(shù)器 $ 在匯編程序時(shí),用在匯編程序時(shí),用$表示當(dāng)前位置計(jì)數(shù)器(偏移地址),

16、方便程序編寫(xiě)和表示當(dāng)前位置計(jì)數(shù)器(偏移地址),方便程序編寫(xiě)和地址計(jì)算。地址計(jì)算。DATASEGMENT STRING1DB “BCDEFGHIACDFEB” COUNT $STRING1DATAENDS(4)END偽指令偽指令 格式格式: END 標(biāo)號(hào)名稱(chēng)標(biāo)號(hào)名稱(chēng) 功能功能:表明源程序結(jié)束:表明源程序結(jié)束 說(shuō)明說(shuō)明:一般放在源程序的最后一行,一個(gè)程序模塊只允許有一個(gè)一般放在源程序的最后一行,一個(gè)程序模塊只允許有一個(gè)END語(yǔ)句語(yǔ)句格式格式: .MODEL 模式類(lèi)型模式類(lèi)型功能功能:指定數(shù)據(jù)和代碼允許使用的長(zhǎng)度。:指定數(shù)據(jù)和代碼允許使用的長(zhǎng)度。說(shuō)明說(shuō)明:模式類(lèi)型也稱(chēng)為內(nèi)存模式、尋址模式,它表示如何

17、在內(nèi)存中為程序、:模式類(lèi)型也稱(chēng)為內(nèi)存模式、尋址模式,它表示如何在內(nèi)存中為程序、數(shù)據(jù)、堆棧等分配空間并存取它們。共有數(shù)據(jù)、堆棧等分配空間并存取它們。共有7種模式類(lèi)型種模式類(lèi)型 。u TINY:微模式(微模式(CSDSSSES)。所有數(shù)據(jù)及代碼放在同一個(gè)物)。所有數(shù)據(jù)及代碼放在同一個(gè)物理段中,數(shù)據(jù)訪(fǎng)問(wèn)都為理段中,數(shù)據(jù)訪(fǎng)問(wèn)都為NEAR類(lèi)型,整個(gè)程序小于類(lèi)型,整個(gè)程序小于64KB,生成的可執(zhí)行,生成的可執(zhí)行文件擴(kuò)展名為文件擴(kuò)展名為.COM,只在,只在DOS操作系統(tǒng)下使用。操作系統(tǒng)下使用。u SMALL:小模式(小模式(SSDSESCS)。所有數(shù)據(jù)放在一個(gè))。所有數(shù)據(jù)放在一個(gè)64KB的物理的物理段中(包

18、括數(shù)據(jù)和堆棧),所有代碼則放在另一個(gè)段中(包括數(shù)據(jù)和堆棧),所有代碼則放在另一個(gè)64KB的物理段中。的物理段中。u MEDIUM:中模式(數(shù)據(jù)小,程序大)。所有數(shù)據(jù)放在一個(gè)中模式(數(shù)據(jù)小,程序大)。所有數(shù)據(jù)放在一個(gè)64KB的物的物理段中,代碼超過(guò)理段中,代碼超過(guò)64KB時(shí)可以放在多個(gè)物理段中,程序中轉(zhuǎn)移或調(diào)用類(lèi)時(shí)可以放在多個(gè)物理段中,程序中轉(zhuǎn)移或調(diào)用類(lèi)型可以為型可以為FAR型。型。u COMPACT:緊湊模式或壓縮模式(數(shù)據(jù)大,程序?。?。所有代碼放在緊湊模式或壓縮模式(數(shù)據(jù)大,程序?。K写a放在一個(gè)一個(gè)64KB的物理段中,程序中的轉(zhuǎn)移或調(diào)用類(lèi)型為的物理段中,程序中的轉(zhuǎn)移或調(diào)用類(lèi)型為NEAR

19、。數(shù)據(jù)超過(guò)。數(shù)據(jù)超過(guò)64KB時(shí)可以放在多個(gè)物理段中。時(shí)可以放在多個(gè)物理段中。u LARGE:大模式(數(shù)據(jù)大,程序大)。代碼和數(shù)據(jù)都可以超過(guò)大模式(數(shù)據(jù)大,程序大)。代碼和數(shù)據(jù)都可以超過(guò)64KB,可放在多個(gè)物理段中,數(shù)據(jù)和代碼都可以是遠(yuǎn)程訪(fǎng)問(wèn)類(lèi)型??煞旁诙鄠€(gè)物理段中,數(shù)據(jù)和代碼都可以是遠(yuǎn)程訪(fǎng)問(wèn)類(lèi)型。u HUGE:巨模式(數(shù)據(jù)巨大,程序大)。數(shù)據(jù)段中單個(gè)數(shù)據(jù)項(xiàng)的大小可巨模式(數(shù)據(jù)巨大,程序大)。數(shù)據(jù)段中單個(gè)數(shù)據(jù)項(xiàng)的大小可以超過(guò)以超過(guò)64KB,代碼段允許超過(guò),代碼段允許超過(guò)64KB,即有多個(gè)代碼段和數(shù)據(jù)段,都允,即有多個(gè)代碼段和數(shù)據(jù)段,都允許遠(yuǎn)程訪(fǎng)問(wèn)。許遠(yuǎn)程訪(fǎng)問(wèn)。u FLAT:平面模式。所有代碼和數(shù)

20、據(jù)被放在一個(gè)段中,但段內(nèi)地址不再平面模式。所有代碼和數(shù)據(jù)被放在一個(gè)段中,但段內(nèi)地址不再是是16位,而是位,而是32位,所以整個(gè)程序可達(dá)位,所以整個(gè)程序可達(dá)4GB大小。大小。MASM6.0以上匯編程以上匯編程序支持,可以在序支持,可以在WINDOWS操作系統(tǒng)下使用。操作系統(tǒng)下使用。 簡(jiǎn)化段程序的段定義語(yǔ)句用偽指令方式定義不同類(lèi)型的段,段不需要使簡(jiǎn)化段程序的段定義語(yǔ)句用偽指令方式定義不同類(lèi)型的段,段不需要使用用ENDS指令結(jié)束,由下一段定義開(kāi)始或程序結(jié)束來(lái)表示。指令結(jié)束,由下一段定義開(kāi)始或程序結(jié)束來(lái)表示。 代碼段定義代碼段定義 格式格式: .CODE 段名段名 功能功能:表明其下面的指令是代碼段部

21、分。段名用于區(qū)分不同的代碼段,:表明其下面的指令是代碼段部分。段名用于區(qū)分不同的代碼段,省略情況下默認(rèn)段名為省略情況下默認(rèn)段名為_(kāi)TEXT。 堆棧段定義堆棧段定義 格式格式: .STACK 字節(jié)數(shù)字節(jié)數(shù) 功能功能:定義一個(gè)用戶(hù)自己的堆棧段。:定義一個(gè)用戶(hù)自己的堆棧段。 說(shuō)明說(shuō)明:堆棧段的默認(rèn)段名為:堆棧段的默認(rèn)段名為STACK,“字節(jié)數(shù)字節(jié)數(shù)”如果不寫(xiě)則默認(rèn)為如果不寫(xiě)則默認(rèn)為1KB。 數(shù)據(jù)段定義數(shù)據(jù)段定義 格式格式: .DATA 段名段名 .DATA?段名?段名 .CONST 段名段名 功能功能:表明其下面內(nèi)容是數(shù)據(jù)段定義的變量或存儲(chǔ)空間預(yù)留。:表明其下面內(nèi)容是數(shù)據(jù)段定義的變量或存儲(chǔ)空間預(yù)留。

22、 說(shuō)明說(shuō)明:一個(gè)源程序中可以有多個(gè):一個(gè)源程序中可以有多個(gè)“.DATA”定義的數(shù)據(jù)段,相當(dāng)于完整定義的數(shù)據(jù)段,相當(dāng)于完整段程序中定義多個(gè)同名的數(shù)據(jù)段。段程序中定義多個(gè)同名的數(shù)據(jù)段。“.DATA?”指令定義未初始化的數(shù)據(jù)段。指令定義未初始化的數(shù)據(jù)段?!?CONST”指令定義一個(gè)常數(shù)數(shù)據(jù)段。指令定義一個(gè)常數(shù)數(shù)據(jù)段。段名用于與其他數(shù)據(jù)段區(qū)分,省略情況下默認(rèn)段名分別是段名用于與其他數(shù)據(jù)段區(qū)分,省略情況下默認(rèn)段名分別是_DATA/_BSS/CONST。格式格式: .EXIT功能功能:退出本程序,返回:退出本程序,返回DOS操作系統(tǒng)。操作系統(tǒng)。說(shuō)明說(shuō)明:其功能可以用:其功能可以用MOV AH,4CHINT

23、 21H兩條指令來(lái)代替。兩條指令來(lái)代替。格式格式: .STARTUP功能功能:用于指示程序開(kāi)始位置,自動(dòng)對(duì):用于指示程序開(kāi)始位置,自動(dòng)對(duì)DS,SS,SP寄存器進(jìn)行初始化寄存器進(jìn)行初始化 宏宏是程序設(shè)計(jì)的一種方式,它把一段程序代碼用一個(gè)特定標(biāo)識(shí)符(宏名)是程序設(shè)計(jì)的一種方式,它把一段程序代碼用一個(gè)特定標(biāo)識(shí)符(宏名)來(lái)表示。在編寫(xiě)程序時(shí),程序員可以使用該標(biāo)識(shí)符(宏名)來(lái)代替這一段程來(lái)表示。在編寫(xiě)程序時(shí),程序員可以使用該標(biāo)識(shí)符(宏名)來(lái)代替這一段程序,從而減少重復(fù)代碼的編寫(xiě)工作。序,從而減少重復(fù)代碼的編寫(xiě)工作。 (1)宏的定義)宏的定義 宏定義語(yǔ)句與過(guò)程定義語(yǔ)句相似。其格式與功能如下:宏定義語(yǔ)句與過(guò)

24、程定義語(yǔ)句相似。其格式與功能如下: 格式格式:宏名宏名 MACRO 形參形參1,形參,形參2,;定義宏名;定義宏名;宏體;宏體ENDM;宏定義結(jié)束;宏定義結(jié)束 功能功能:定義一個(gè)宏:定義一個(gè)宏 說(shuō)明說(shuō)明:宏體可以是匯編語(yǔ)言所允許的任何指令或偽指令語(yǔ)句:宏體可以是匯編語(yǔ)言所允許的任何指令或偽指令語(yǔ)句ADDTHREEMACRO V0,V1,V2;定義名為定義名為ADDTHREE的宏,帶三個(gè)參數(shù)的宏,帶三個(gè)參數(shù)MOV AX,V0;將第一個(gè)參數(shù)值賦給將第一個(gè)參數(shù)值賦給AXADD AX,V1 ;將將AX與與V1相加相加ADD AX,V2;將將AX與與V2相加相加ENDM;宏定義結(jié)束宏定義結(jié)束(2)宏的引用)宏的引用 宏可以在程序中被引用,引用時(shí)其格式如下:宏可以在程序中被引用,引用時(shí)其格式如下: 格式格式: 宏名宏名 實(shí)參實(shí)參1,實(shí)參,實(shí)參2, 功能功能:引用宏名對(duì)應(yīng)的相應(yīng)代碼,并傳遞相關(guān)參數(shù)。:引用宏名對(duì)應(yīng)的相應(yīng)代碼,并傳遞相關(guān)參數(shù)。ADDTHREE SI,20,DIMOV AX,SIADD AX,20ADD AX,DI(3)宏的嵌套定義)宏的嵌套定義 宏嵌套可以有兩種形式,一種是在宏定義內(nèi)引用其它宏,另一種是宏定宏嵌套可以有兩種形式,一種是在宏定義

溫馨提示

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

評(píng)論

0/150

提交評(píng)論