




已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章 匯編語言語法和DOS功能調(diào)用 教學(xué)內(nèi)容 4.1 數(shù)據(jù)類型及其存儲規(guī)則 4.2 匯編語言程序的格式 4.3 偽指令語句 4.4 匯編語言中的表達(dá)式 4.5 指令語句 4.7 DOS系統(tǒng)功能調(diào)用 教學(xué)目標(biāo) 1 理解匯編語言中的基本數(shù)據(jù)。 2 掌握匯編語言中的常用偽指令。 3 理解DOS系統(tǒng)功能調(diào)用。,重點(diǎn)內(nèi)容 1 匯編語言中的基本數(shù)據(jù)(標(biāo)識符、常數(shù)、變量、標(biāo)號)。 2 匯編語言中的常用偽指令。 3 匯編語言中的表達(dá)式(算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、分析運(yùn)算符、修改屬性運(yùn)算符、其他運(yùn)算符)。 4 DOS系統(tǒng)功能調(diào)用。 難點(diǎn)內(nèi)容 1 匯編語言中的常用偽指令。 2 DOS系統(tǒng)功能調(diào)用。 學(xué)時(shí)數(shù) 4學(xué)時(shí),計(jì)算機(jī)程序設(shè)計(jì)語言一般可分為三種:機(jī)器語言、匯編語言和高級語言。 機(jī)器語言:也稱機(jī)器碼,是CPU唯一能夠識別的語言,用不同數(shù)值的二進(jìn)制數(shù)來表示要求CPU執(zhí)行的命令,不同的CPU語言也不同,難以記憶和閱讀。 匯編語言:為了解決機(jī)器語言難以記憶和閱讀的問題,用英文縮寫來表示各種指令而生成的一種語言,它與機(jī)器語言基本是一一對應(yīng)的。因此,匯編語言具有很高的執(zhí)行效率。但也正因?yàn)檫@樣,匯編語言也仍然與CPU相關(guān)聯(lián),不同的CPU要使用不同的匯編語言。在執(zhí)行前要將其轉(zhuǎn)換成CPU能夠識別的機(jī)器碼,這種轉(zhuǎn)換稱為匯編,由于匯編語言與機(jī)器語言基本是一一對應(yīng)的,所以這種轉(zhuǎn)換是唯一的。 高級語言:獨(dú)立于CPU之外,語句直觀簡練,編程效率高。在執(zhí)行前要將其轉(zhuǎn)換成CPU能夠識別的機(jī)器碼,這種轉(zhuǎn)換稱為編譯。不同的編譯軟件,編譯后獲得的機(jī)器碼是不同的,好的編譯軟件,得到的機(jī)器碼占用內(nèi)存小、執(zhí)行效率高,但是與匯編語言相比都有較大的差距。,4.1 匯編語言程序的格式 例4.1 試求小于100的所有非零偶數(shù),并把結(jié)果存入以BUFF開始的內(nèi)存區(qū). 1 MY_DATA SEGMENT 2 BUFF DB 50 DUP(?) 3 MY_DATA ENDS 4 MY_CODE SEGMENT 5 ASSUME CS:MY_CODE, DS:MY_DATA 6 START: MOV AX, MY_DATA 7 MOV DS, AX 8 MOV AL,2 9 LEA BX,BUFF 10 LLP: MOV BX,AL 11 INC AL 12 INC AL 13 CMP AL,100 14 JNZ LLP 15 INC 20H 16 MY_CODE ENDS 17 END STRAT,匯編語言程序的格式可以歸結(jié)為以下幾點(diǎn): (1) 段的結(jié)構(gòu) 段名1 SEGMENT 語句1 語句i 段名1 ENDS 段名2 SEGMENT 語句1 語句j 段名2 ENDS 段名n SEGMENT 語句1 語句k 段名n ENDS END 標(biāo)號,4.2 匯編語言中的基本數(shù)據(jù) 1、標(biāo)識符 標(biāo)識符由程序員自由建立起來的,有特定意義的字符序列。 標(biāo)識符的組成規(guī)則如下: 必須由字母、數(shù)字(0,9)及特殊符號(?, ,)組成,且必須以字母打頭。 字符總數(shù)限制在31個以內(nèi)。 不能使用屬于系統(tǒng)專用保留字(保留的字)。 2、常數(shù) 常數(shù)語句中出現(xiàn)的那些固定值,除了自身的值以外,沒有其它任何屬性。 常數(shù)分為兩類 (1)數(shù)值常數(shù) (2)字符串常數(shù),3、變量 變量存放在存儲器單元中的操作數(shù),它的值是可以改變的,在程序中出現(xiàn)的是存儲器單元地址的符號,即與某一數(shù)據(jù)項(xiàng)第一字節(jié)相對應(yīng)的標(biāo)識符。 變量的3個屬性: 段地址(SEG):變量所在段的段地址。 偏移地址(OFFSET):變量所在段內(nèi)的偏移地址。 類型(TYPE):所定義的每個變量所占據(jù)的字節(jié)數(shù)。 4、標(biāo)號 標(biāo)號可執(zhí)行指令語句地址的符號表示,即用標(biāo)識符來表示地址。 標(biāo)號的3個屬性: 段地址(SEG) :與標(biāo)號對應(yīng)的指令首字節(jié)所在的段地址。 偏移地址(OFFSET) :與標(biāo)號對應(yīng)的指令首字節(jié)所在的偏移地址。 類型(TYPE) :標(biāo)號的類型屬性有兩種:NEAR和FAR類型。,4.3 偽指令語句 偽指令語句可分為以下幾種類型: 數(shù)據(jù)定義偽指令語句 標(biāo)識符賦值與解除偽指令語句 段定義偽指令語句 過程定義偽指令語句 程序開始與結(jié)束偽指令語句 方式定義偽指令語句 結(jié)構(gòu)定義偽指令語句 分組偽指令語句 其它偽指令語句,1、數(shù)據(jù)定義偽指令語句 共有五條:DB、DW、DD、DQ和DT,分別用來定義字節(jié)、字、雙字、8字節(jié)和10字節(jié)。 指令格式: 變量名 助記符 操作數(shù)1,操作數(shù)2,操作數(shù)n ;注釋 變量名 助記符 n DUP(操作數(shù)1,操作數(shù)2,操作數(shù)n) ;注釋 功能:將操作數(shù)存入以變量名所指定的存儲單元為首地址的存儲區(qū)中,或者分配存儲單元。 n DUP( )表示將括號內(nèi)的操作數(shù)重復(fù)n次,n必須為正數(shù)。,例4-2 操作數(shù)是常數(shù)、表達(dá)式、字符串?dāng)?shù)據(jù)的定義 DATA1 DB 10H,25H DATA2 DW 9988H,56H DATA3 DD 2*40H,0AABBH DATA4 DB HELLO,例4-3 操作數(shù)用“?”定義不確定值的變量,用DUP來定義重復(fù)變量,不確定值的變量一般用作保留存儲空間,以便存放運(yùn)算結(jié)果。 DATA1 DB ? DATA2 DW 0D55H, ? DATA3 DB 5 DUP(0) DATA4 DW 10 DUP(?) DATA5 DB 4 DUP(1,2 DUP(20),2、標(biāo)識符賦值與解除偽指令語句 共有4條: 等值偽指令語句EQU 等號偽指令語句“=” 解除偽指令語句PURGE 別名定義偽指令語句LABEL (1)等值偽指令EQU語句 指令格式: 標(biāo)識符 EQU 操作數(shù) 功能:為操作數(shù)定義一個標(biāo)識符,以后就可以以標(biāo)識符替代該操作數(shù)。一經(jīng)定義后就不能重新定義。 例4.5 DATA EQU 100 DATA1 EQU DATA2 CI EQU ADD,(2)等號偽指令語句“=” 指令格式: 標(biāo)識符=操作數(shù) 功能:與EQU具有相同的功能,但允許重新定義。 例4.6 DATA =100 DATA1 = DATA +10 SOURCE=BXSI MOV AX,SOURCE SOURCE=BX MOV CX,SOURCE (3)解除偽指令語句PURGE 指令格式: PURGE 標(biāo)識符1,標(biāo)識符2,標(biāo)識符n 功能:將EQU定義過的標(biāo)識符解除定義,以便可以再次用EQU定義。,(4)別名定義偽指令語句 格式:別名 LABEL 類型屬性 LABEL:偽指令助記符,不可缺省。 功能:為一個已經(jīng)定義過的標(biāo)識符另取一個名稱,以獲得一個新的類型屬性。 例4.7 定義變量的別名 DATAB LABEL BYTE DATAW DW 1234H,5678H DISF LABEL FAR DISN MOV AX,SI,3、段定義偽指令語句 (1)段結(jié)構(gòu)定義偽指令語句 SEGMENTENDS 指令格式: 段名 SEGMENT 定位類型 組合類型 分類名 邏輯段內(nèi)容 段名 ENDS 功能:定義一個邏輯段。 (1)段名:不可缺少,是邏輯段的地址,放在SEGMENT和ENDS的前面。 (2)助記符:不可缺少,即SEGMENT和ENDS,分別表示段的開始和結(jié)束。 (3)參數(shù):可選,有定位類型、組合類型和分類名三個參數(shù)。, 定位類型,表示本段起始地址,共有以下4種: PARA:缺省值,段的起始地址在節(jié)(16字節(jié))的邊界上。 BYTE:段的起始地址在任意字節(jié)邊界上。 WORD:段的起始地址在任意字邊界上。 PAGE:段的起始地址在頁(256字節(jié))邊界上。 組合類型,表示同類別名的段的連接方式,共有以下6種: NONE:缺省值,不與其他段連接。 PUBLIC:與其他段連接時(shí)按LINK中的順序,由低地址到高地址。 COMMON:與其他段以覆蓋方式連接,段長度為最大段的長度。 AT 表達(dá)式:該段起始地址在表達(dá)式所指定的節(jié)的邊界上。 STACK:指定該段為堆棧段,在堆棧段中必須有該參數(shù),多個模塊只用設(shè)一個堆棧段,使用順序連接方式組合。 MEMORY:多個邏輯段連接時(shí),本邏輯段定位在地址最高的存儲區(qū)。有多個MEMORY段時(shí),除第一個MEMORY段外,其他段按照COMMON方式處理。, 類別名,用來為該段取一個類別名,以便可以將同類別名的段進(jìn)行組合??蛇x,不超過40個字符。,(2)段分配偽指令語句 指令格式: ASSUME CS:段名,DS:段名,SS:段名,ES:段名 功能:定義當(dāng)前有效的4個邏輯段,指明段和段寄存器的關(guān)系 注意點(diǎn): 1)助記符ASSUME不可省略,一般放在代碼段的開始處。 2) ASSUME后面的指令參數(shù),由段寄存器名(CS、DS、ES、SS)、冒號及段名組成,各參數(shù)之間用逗號隔開,段名應(yīng)是SEGMENTENDS中定義過的名字。 3)4個邏輯段不一定要全部定義,不使用的可以不定義。通常代碼段和數(shù)據(jù)段是必須的,若使用了串指令,還應(yīng)定義附加段ES。 4)可以用ASSUME 段寄存器名:NOTHING取消定義。 5) ASSUME只將某個段分配給相應(yīng)的段寄存器,只有代碼段的段基址自動裝入CS,其他段還須用指令裝入相應(yīng)的段基址。,4、過程定義偽指令語句 指令格式: 過程名 PROC 屬性 過程內(nèi)容 RET 過程名 ENDP 功能:定義一個由主程序可以用CALL指令調(diào)用的過程。 說明: 1)過程名是過程的名字,也是子程序的入口地址,不可缺少。如同標(biāo)號一樣,也有三種屬性: 段地址:過程的段基址。 偏移地址:過程的第一個字節(jié)與段首址之間相距的字節(jié)數(shù)。 距離類型:NEAR和FAR類型。NEAR允許在段內(nèi)調(diào)用,F(xiàn)AR允許在段間調(diào)用,若缺省則為NEAR。,5、 程序開始與結(jié)束偽指令語句 共有4條偽指令語句:NAME、TITLE、ORG和END。 (1)目標(biāo)模塊命名偽指令語句 格式: NAME 程序名 在輸出列表文件時(shí),每頁開頭打印這個程序名,若未用此指令則打印文件名。 TITLE 文本名 ; 將文本名賦給目標(biāo)模塊作名字。,(2)定位偽指令語句 格式:ORG 表達(dá)式 功能:給出下一條語句的段內(nèi)偏移量。 例4.8 用ORG指定數(shù)據(jù)段和代碼段地址。 DATA SEGMENT X1 DW 20H,60H, ORG 100H X2 DB 10H,20H,30H ORG 200H X3 DW 1234H, 4321H DATA ENDS CODE SEGMENT ORG 100H ASSUME CS:CODE,DS:DATA START: MOV AX,DATA CODE ENDS,(3)程序結(jié)束偽指令語句 格式: END 標(biāo)號名 功能:在程序中不可缺省,標(biāo)記匯編語言的源程序的結(jié)束。匯編程序在匯編時(shí)遇到END就停止匯編。程序執(zhí)行時(shí)從END后的標(biāo)號名處開始。 例4.9 程序結(jié)束偽指令語句的應(yīng)用 CODE SEGMENT START:MOV AX,BX MOV CX,12H CODE ENDS END START,6、 方式定義偽指令語句 格式: .8086 .386 7、 結(jié)構(gòu)定義偽指令語句 有三條語句:結(jié)構(gòu)定義偽指令,結(jié)構(gòu)存儲分配和預(yù)置偽指令及結(jié)構(gòu)使用偽指令。 (1)結(jié)構(gòu)定義偽指令語句 格式:結(jié)構(gòu)名 STRUC 數(shù)據(jù)變量序列 結(jié)構(gòu)名 ENDS,(2) 結(jié)構(gòu)存儲分配和預(yù)置偽指令語句 格式:結(jié)構(gòu)變量名 結(jié)構(gòu)名 元素值,元素值 結(jié)構(gòu)變量名 結(jié)構(gòu)名 N DUP(元素值,元素值) 例4.11 對例4.10中的TAB結(jié)構(gòu)進(jìn)行存儲空間分配和預(yù)置,形成4個結(jié)構(gòu)變量。 DATA1 TAB DATA2 TAB 1234 DATA3 TAB ,34H,SEG PLT DATA4 TAB 5 DUP(WXYZ,22H),(3) 結(jié)構(gòu)使用偽指令語句 格式:結(jié)構(gòu)變量名字段變量 設(shè)當(dāng)前數(shù)據(jù)段基址為1000H,結(jié)構(gòu)變量DATA1的偏移地址為100H,則例4-1中的4個結(jié)構(gòu)變量在存儲器中的地址分配如圖4-3所示。,8、 分組偽指令語句 格式:組名 GROUP 段1,段2, 例4.12 GROUP1 GROUP SEG1,SEG2,SEG3 ASSUME DS:GROUP1 MOV AX,GROUP1 MOV DS,AX MOV BX,GRPUP1:VAR1 ,9、 其它偽指令語句 (l)外部偽指令語句 格式: PUBLIC 名稱1,名稱2, 將名稱1,名稱2,為定義為全局使用。 EXTRN 名稱1:類型,名稱2:類型, 說明名稱1,名稱2, 是在其他模塊中定義過的標(biāo)識符,并說明其類型。,例4-12 用EXTRN和PUBLIC語句實(shí)現(xiàn)模塊間標(biāo)識符的交叉訪問 模塊1 EXTRN DATA2:BYTE, SUBTR1:NEAR PUBLIC TABLE, DATA1 DSEG SEGMENT TABLE DB 100 DUP(?) DATA1 DW ? CODE SEGMENT DSEG ENDS,CODE SEGMENT ASSUME CS:CODE, DS:DSEG MOV AX, DSEG MOV DS, AX MOV AL, DATA1 CALL SUBTR1 MOV AX, SEG DATA2 MOV ES, AX MOV BX, ES:DATA2 CODE ENDS END,模塊2 EXTRN TABLE:BYTE PUBLIC SUBTR1, DATA2 DSEG SEGMENT DATA2 DB ? DSEG ENDS CODE SEGMENT SUBTR1: CODE ENDS END,(2)對準(zhǔn)偽指令語句 格式:EVEN 功能: EVEN使下一語句的地址調(diào)整為偶地址。 例4.14 EVEN直接放在某一語句前,匯編程序匯編時(shí)就會完成將地址調(diào)整在偶地址上。 DATA SEGMENT ORG 100H A1 DB 0DH EVEN A2 DW 100 DUP(?) DATA ENDS,(3)條件匯編偽指令語句 一般格式是: IF ;如果條件成立 ELSE ;否則 END IF ;結(jié)束條件匯編語句 IF有多種形式,它們是: IF 操作數(shù) IFE 操作數(shù) IFDEF 標(biāo)號或變量 IFNDEF 標(biāo)號或變量 IFB IFNB IFIDN , IFDIF , IF1 IF2,4.4 匯編語言中的表達(dá)式 表達(dá)式-運(yùn)算對象和運(yùn)算符組成。 匯編語言中有類運(yùn)算符,即: 算術(shù)運(yùn)算符; 邏輯運(yùn)算符; 關(guān)系運(yùn)算符; 分析運(yùn)算符; 修改屬性運(yùn)算符; 其它運(yùn)算符 。,、算術(shù)運(yùn)算符 算術(shù)運(yùn)算符有:加()、減()、乘(*)、除()、取模運(yùn)算(MOD)、左移(SHL)和右移(SHR)。 取模運(yùn)算是取兩數(shù)相除的余數(shù),對象必須為正整數(shù)。 例如 92 MOD 16 結(jié)果為12(相當(dāng)于取低4位的值) 97H MOD 20H 結(jié)果為23(相當(dāng)于取低5位的值) 33H MOD 7 結(jié)果為2,例4-14 包含乘法和減法算術(shù)運(yùn)算符的表達(dá)式 DATA SEGMENT ARRAY DB 1,2,3,4,5,6 TRY DB 20 DATA ENDS CODE SEGMENT MOV BX, 30*5 MOV CX, (TRY-ARRAY) CODE ENDS,例4-15 源程序包含除法、減法、模運(yùn)算和移位運(yùn)算的表達(dá)式 DATA SEGMENT KA EQU 800 DATA ENDS CODE SEGMENT MOV BX, KA-80 MOV AX, KA MOD 100 MOV CX, KA/100 MOV DH, 01100100B SHR 2 CODE ENDS,2、邏輯運(yùn)算符 邏輯運(yùn)算符有:與(AND)、或(OR)、非(NOT)和異或(XOR)。 例 4-16 AND、OR、NOT、XOR邏輯運(yùn)算的表達(dá)式 DATA SEGMENT PORT EQU 81H DATA ENDS CODE SEGMENT MOV AL,NOT 0FFH MOV BL,8CH AND 73H MOV AH,8CH OR 73H MOV CH,8CH XOR 73H IN AL,PORT AND DX,PORT AND 0FEH OUT DX,AX CODE ENDS,3、關(guān)系運(yùn)算符 關(guān)系運(yùn)算符有:相等 EQ、不等 NE、小于 LT、大于 GT、小于或等于 LE、大于或等于GE。 4、分析運(yùn)算符 分析運(yùn)算符有:OFFSET、SEG、TYPE、LENGTH、SIZE (1)OFFSET 格式:OFFSET 變量或標(biāo)號 功能:返回變量或標(biāo)號的偏移地址。 例4-17 用OFFSET返回標(biāo)號或變量偏移地址值的表達(dá)式 DATA SEGMENT DAT1 DB 81H DATA ENDS CODE SEGMENT MOV SI,OFFSET LAB1 LAB1: MOV BX,OFFSET DAT1 CODE ENDS,(2)SEG 格式:SEG 變量或標(biāo)號 功能:返回變量或標(biāo)號的段基址。 (3)TYPE 格式:TYPE 變量或標(biāo)號 功能:返回變量的類型屬性(在變量前),返回標(biāo)號的距離屬性(在標(biāo)號前)。,表4-1 TYPE運(yùn)算符返回值,例 4-18 TYPE加在變量和標(biāo)號前的表達(dá)式 DATA SEGMENT AA1 DB 20H, 30H AA2 DW 0438H AA3 DD ? DATA ENDS CODE SEGMENT LL1: MOV AH,TYPE AA1 MOV BH,TYPE AA2 ADD AL,TYPE AA3 MOV BL,TYPE LL1 CODE ENDS,(4) LENGTH 格式:LENGTH 變量 功能:返回其后第一個變量的項(xiàng)目數(shù)。 例 4-19 LENGTH加變量的表達(dá)式 DATA SEGMENT BB1 DW 100 DUP (?) BB2 DW 1,2,3 BB3 DB A B C D DATA ENDS CODE SEGMENT MOV CX, LENGTH BB1 ;CX=100 MOV BL, LENGTH BB2 ;CX=1 MOV AL, LENGTH BB3 ;CX=1 CODE ENDS,(5) SIZE 格式:SIZE 變量 功能:返回變量的字節(jié)數(shù)。 把例4-19中含有LENGTH表達(dá)式改為SIZE表達(dá)式,即: MOV CX, SIZE BB1 ;CX=200 MOV BL, SIZE BB2 ;CX=2 MOV AL, SIZE BB3 ;CX=1,5、修改屬性運(yùn)算符(綜合運(yùn)算符) 修改屬性運(yùn)算符有:段操作符、PTR、THIS、HIGH、LOW、SHORT (1) 段操作符 格式: 段前綴(CS、DS、ES、SS) : 變量或地址表達(dá)式 功能:使用段前綴作為變量或地址表達(dá)式的使用段。 (2) PTR 格式: 類型 PTR 變量 距離 PTR 標(biāo)號 功能:將類型(BYTE、WORD等)賦給變量,或?qū)⒕嚯x(NEAR、FAR)賦給標(biāo)號。,例 4-20 帶PTR表達(dá)式的變量 DATA SEGMENT CC1 DB 16H,36H CC2 DW 1122H,3344H DATA ENDS CODE SEGMENT LL1: MOV AX,WORD PTR CC1 MOV BL,BYTE PTR CC2 MOV BYTE PTR BX, 10H MOV WORD PTR BX, 10H JMP FAR PTR LL1 CODE ENDS,(3) THIS 格式: 變量 EQU THIS 類型 標(biāo)號 EQU THIS 距離 功能:將類型(BYTE、WORD等)賦給變量,或?qū)⒕嚯x(NEAR、FAR)賦給標(biāo)號。 例如: DATA1 EQU THIS BYTE TABLE DW 200 DUP(?) DATA1與TABLE地址相同,但DATA1是字節(jié)類型,而TABLE是字類型。 又如: LL1 EQU THIS FAR MOV AX,100 (4) SHORT 格式:SHORT 標(biāo)號 功能:指明標(biāo)號的距離為-128+127。,(5) HIGH和 LOW 它們稱為字節(jié)分離運(yùn)算符 格式: HIGH 變量或標(biāo)號 LOW 變量或標(biāo)號 功能:從變量或標(biāo)號中分離出高位字節(jié)或低位字節(jié)。 例4-21 帶HIGH和 LOW表達(dá)式的變量 DATA SEGMENT BB1 EQU 1234H BB2 EQU 0A0B0H DATA ENDS CODE SEGMENT MOV AH, HIGH BB1 MOV BL, LOW BB2 CODE ENDS,6、其它運(yùn)算符 7、注意點(diǎn): (1)注意表達(dá)式中各運(yùn)算符和操作符的優(yōu)先級 (2)注意數(shù)制統(tǒng)一,4.5 指令語句 指令語句的格式: 標(biāo)號: 前綴指令 助記符 操作數(shù) ;(注釋) (1)立即尋址和直接尋址的表示形式 例4-22 立即尋址和直接尋址在表示形式上的區(qū)別 DATA SEGMENT BB1 EQU 1234H BB2 DW 0A0B0H DATA ENDS CODE SEGMENT MOV AX, BB1 ;立即尋址 MOV BX, BB2 ;直接尋址 MOV CX, BB1 CODE ENDS,(2) 基址寄存器加變址寄存器尋址的表示形式 有兩種表示形式: MOV AX,BXSI MOV AX,BX+SI (3) 相對寄存器尋址的表示形式 例4-23 相對寄存器尋址的兩種表示形式 DATA SEGMENT MYDAT DB 100 DUP(?) DATA ENDS CODE SEGMENT MOV AX, MYDATBX MOV AX, MYDAT+BX MOV CX, MYDATBXSI MOV CX, MYDAT+BX+SI CODE ENDS,4.6 宏指令語句及其使用 1、宏定義 宏定義格式: 宏指令名 MACRO 形式參數(shù)1,形式參數(shù)2 宏體 ENDM 2、宏調(diào)用 宏調(diào)用格式: 宏指令名 實(shí)際參數(shù)1,實(shí)際參數(shù)2 3、宏展開,例4-24 無形式參數(shù)的宏定義、宏調(diào)用及宏展開 宏定義: PUSHAB MACRO PUSH AX PUSH BX ENDM 宏調(diào)用: PUSHAB 宏展開: + PUSH AX + PUSH BX,例4-25 帶形式參數(shù)的宏定義、宏調(diào)用及宏展開 宏定義: LDSF MACRO PR,VAR, N,REG,CC MOV PR,VAR MOV AX,PR MOV CL, N S&CC REG, CL ENDM 宏調(diào)用1: LDSF SI,WVAR1,4,AX,AR 宏調(diào)用2: LDSF DI,WVAR2,3,BX,AL 宏展開1: +MOV SI,WVAR1 +MOV AX,SI +MOV CL, 4 +SAR AX, CL 宏展開2: +MOV DI,WVAR2 +MOV AX,DI +MOV CL, 3 +SAL BX, CL,4、宏嵌套 (1)宏定義中使用宏調(diào)用 例2-26 設(shè)在程序的數(shù)據(jù)段已經(jīng)定義了變量X,Y,Z,試計(jì)算X+YZ,并要求保護(hù)所有使用的寄存器。 宏定義: DBF MACRO P, Q MOV BX, P MOV AX,Q ADD AX, BX ENDM DBFS MACRO X1, X2, X3 PUSH AX PUSH BX DBF X1, X2 MOV X3, AX POP BX POP AX ENDM,宏調(diào)用: DBFS X,Y,Z 宏展開: +PUSH AX +PUSH BX +MOV BX, X +MOV AX,Y +ADD AX, BX +MOV Z, AX +POP BX +POP AX,(2)宏定義中包含宏定義 例2-27 設(shè)在程序的數(shù)據(jù)段已經(jīng)定義了變量X,Y,Z,試共用一個宏定義,計(jì)算X+YZ、X-YZ、X AND YZ,并要求保護(hù)所有使用的寄存器。 宏定義: DEFM MACRO MACN,OPEN MACN MACRO A,B,C PUSH AX MOV AX,A OPEN AX,B MOV C,AX POP AX ENDM ENDM,宏調(diào)用定義加法: DEFM ADDIT,ADD 宏展開:+ADDIT MACRO A,B,C PUSH AX MOV AX,A ADD AX,B MOV C,AX POP AX ENDM 宏調(diào)用定義減法: DEFM SUBT,SUB 宏展開: +SUBT MACRO A,B,C PUSH AX MOV AX,A SUB AX,B MOV C,AX POP AX ENDM,宏調(diào)用定義邏輯“與”: DEFM ANDT,AND 宏展開: +ANDT MACRO A,B,C PUSH AX MOV AX,A AND AX,B MOV C,AX POP AX ENDM 宏調(diào)用實(shí)現(xiàn)X+YZ: ADDIT X,Y,Z 宏展開: +PUSH AX +MOV AX,X +ADD AX,Y +MOV Z,AX +POP AX,宏調(diào)用實(shí)現(xiàn)X-YZ: SUBT X,Y,Z 宏展開:+PUSH AX +MOV AX,X +SUB AX,Y +MOV Z,AX +POP AX 宏調(diào)用實(shí)現(xiàn) X AND YZ: ANDT X,Y,Z 宏展開: +PUSH AX +MOV AX,X +AND AX,Y +MOV Z,AX +POP AX,5、宏定義中的標(biāo)號與變量 定義局部標(biāo)號的格式: LOCAL 參數(shù)1、參數(shù)2、參數(shù)n 例4.29 延時(shí)宏指令語句 宏定義: DELAY MACRO VALUE1,VALUE2 LOCAL AGAIN1,AGAIN2 PUSH AX PUSH CX MOV CX,VALUE1 AGAIN1: MOV AX,VALUE2 AGAIN2: DEC AX JNZ AGAIN2 LOOP AGAIN1 POP CX POP AX ENDM,宏調(diào)用1: DELAY 1234H, 5678H 宏調(diào)用2: DELAY 9ABCH, 0DEF0H 宏展開1: DELAY 1234H, 5678H PUSH AX PUSH CX MOV CX,1234H ?0000: MOV AX,5678H ?0001: DEC AX JNZ ?0001 LOOP ?0000 POP CX POP AX,宏展開2: DELAY 9ABCH, 0DEF0H PUSH AX PUSH CX MOV CX,09ABCH ?0002: MOV AX,0DEF0H ?0003: DEC AX JNZ ?0003 LOOP ?0002 POP CX POP AX,6、其它宏指令語句 (1)取消宏指令語句 格式:PURGE 宏指令名
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司背景墻策劃方案
- 公司春季放風(fēng)箏活動方案
- 公司游園小活動策劃方案
- 公司職稱評審策劃方案
- 公司群體互動策劃方案
- 公司群體性運(yùn)動活動方案
- 公司節(jié)前大掃除活動方案
- 公司知識跨年活動方案
- 公司管理規(guī)范年活動方案
- 公司旅游預(yù)熱引流活動方案
- 網(wǎng)絡(luò)輿情監(jiān)控管理制度
- 機(jī)器試用擔(dān)保協(xié)議書范本
- 小學(xué)生預(yù)防拐騙教育課件
- 醫(yī)學(xué)影像分析-洞察及研究
- 2025至2030中國無線通訊檢測行業(yè)市場發(fā)展分析及競爭格局與投資機(jī)會報(bào)告
- 2025年上海徐匯區(qū)高一(下)信息技術(shù)合格考試題及答案
- 國家開放大學(xué)《理工英語1》期末機(jī)考題庫
- 少兒財(cái)商的培養(yǎng)(課堂)課件
- 暨南大學(xué)《馬克思主義基本原理概論》題庫歷年期末考試真題分類匯編及答案
- 青霉素的發(fā)現(xiàn)與作用課件
- 2018年專利代理師資格考試科目三-專利代理實(shí)務(wù)真題及解析
評論
0/150
提交評論