計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ).ppt_第1頁(yè)
計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ).ppt_第2頁(yè)
計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ).ppt_第3頁(yè)
計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ).ppt_第4頁(yè)
計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ).ppt_第5頁(yè)
已閱讀5頁(yè),還剩71頁(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)介

匯編語(yǔ)言概述,一、概述 1.高級(jí)語(yǔ)言與匯編語(yǔ)言比較,高級(jí)語(yǔ)言:語(yǔ)句 變量說(shuō)明/定義 int y,a=25,b=3,c=76; 給變量賦值 y=2(a+b)-c,匯編語(yǔ)言:指令 分配寄存器 分配存儲(chǔ)單元 數(shù)據(jù)傳遞,2.匯編程序結(jié)構(gòu) 數(shù)據(jù)段 堆棧段 代碼段,;設(shè)置數(shù)據(jù)段 DATA SEGMENT A DB 25 ;數(shù)據(jù)A B DB 3 ;數(shù)據(jù)B C DB 76 ;數(shù)據(jù)C Y DB ? ;存放結(jié)果 DATA ENDS ;設(shè)置堆棧段 STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS,示例:,y=2(a+b)-c,;設(shè)置代碼段 COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1 START: MOV AX , DATA ;裝填段寄存器DS MOV DS , AX MOV AL , A ;取數(shù)據(jù)A ADD AL , B ;計(jì)算(A+B) SAL AL , 1 ;計(jì)算 2(A+B) SUB AL , C ;計(jì)算 2(A+B)-C MOV Y , AL ;存結(jié)果 MOV AH,4CH ;結(jié)束用戶(hù)程序,返回操作系統(tǒng) INT 21H COSEG ENDS END START,示例:,匯編語(yǔ)言: 是匯編格式指令,偽指令的集合及其表示,使用這些指令的一組規(guī)則。 機(jī)器語(yǔ)言: 用二進(jìn)制編碼的機(jī)器指令的集合及一組使用規(guī)則,它是CPU能直接識(shí)別的唯一語(yǔ)言。 MOV DS,AX 匯編語(yǔ)言 8E D8 機(jī)器語(yǔ)言(目標(biāo)代碼),匯編語(yǔ)言與機(jī)器語(yǔ)言,匯編語(yǔ)言與目標(biāo)代碼的對(duì)應(yīng),與機(jī)器語(yǔ)言相關(guān) 效率高 編寫(xiě)源程序繁瑣 調(diào)試?yán)щy,匯編語(yǔ)言特點(diǎn),(1)程序執(zhí)行占用較短的時(shí)間,或者占用較小存儲(chǔ)容量的場(chǎng)合。 (2)程序與計(jì)算機(jī)硬件密切相關(guān),程序直接控制硬件的場(chǎng)合。 (3)需提高大型軟件性能的場(chǎng)合。 (4)沒(méi)有合適的高級(jí)語(yǔ)言的場(chǎng)合。,匯編語(yǔ)言的主要應(yīng)用場(chǎng)合:,二、匯編語(yǔ)言語(yǔ)句種類(lèi),語(yǔ)句種類(lèi) 指令語(yǔ)句: 又叫可執(zhí)行語(yǔ)句,在匯編時(shí)產(chǎn)生一個(gè)目標(biāo)代碼, 對(duì)應(yīng)機(jī)器的一種操作。 偽指令語(yǔ)句:又叫命令語(yǔ)句。用于指示匯編程序如何匯編源程序,沒(méi)有目標(biāo)代碼與之對(duì)應(yīng)。 宏指令語(yǔ)句:由用戶(hù)自定義的指令。(指令的擴(kuò)展),格式: 名字 操作符 操作數(shù) ; 注釋 指令語(yǔ)句: 標(biāo)號(hào): 助記符 操作數(shù),操作數(shù);注釋 偽指令語(yǔ)句:名字 定義符 參數(shù),.,參數(shù) ;注釋 命名規(guī)則: 可以用 ?,_,數(shù)字和英文字符。 名字的第一個(gè)字符不能是數(shù)字。 名字的長(zhǎng)度不受限制,但只有前31個(gè)字符有效。 不允許用保留字作名字(指令,偽指令,寄存器名等)。,二、匯編語(yǔ)言語(yǔ)句格式,指令語(yǔ)句: 標(biāo)號(hào):助記符 操作數(shù),操作數(shù);注釋,1標(biāo)號(hào):標(biāo)號(hào)是機(jī)器指令語(yǔ)句存放地址的符號(hào)表示,代表該指令目標(biāo)代碼的第一個(gè)字節(jié)地址,后面必須緊跟冒號(hào)“:” 。 2指令助記符:指令助記符為語(yǔ)句的核心成分,表示了該語(yǔ)句的操作類(lèi)型。 “MOV” 3操作數(shù):操作數(shù)表示指令助記符的操作對(duì)象。 4注釋?zhuān)鹤⑨尵苑痔?hào)開(kāi)始,它可占一行或多行,一般放在一條語(yǔ)句的后面。,偽指令語(yǔ)句:名字 定義符 參數(shù),.,參數(shù);注釋,1名字(符號(hào)名):偽指令語(yǔ)句的一個(gè)可選項(xiàng),空格表示結(jié)束,不得使用冒號(hào)。 2定義符(偽指令符):指定匯編程序要完成的具體操作,如數(shù)據(jù)定義偽指令DB、DW、DD,段定義偽指令SEGMENT,假定偽指令A(yù)SSUME等。 3參數(shù)(操作數(shù)):偽指令后面的操作數(shù)可以是常數(shù)、字符串、變量、表達(dá)式等,其個(gè)數(shù)由具體的偽指令決定,各個(gè)操作數(shù)之間必須以“逗號(hào)”分隔。 4注釋?zhuān)簜沃噶畹淖⑨尡仨氁浴?;”開(kāi)始,其作用同指令語(yǔ)句中的注釋部分。,三、符號(hào)定義語(yǔ)句,1. 等值語(yǔ)句 格式: 符號(hào) EQU 表達(dá)式 表達(dá)式:常數(shù)或數(shù)值表達(dá)式 地址表達(dá)式 變量或標(biāo)號(hào) CONST EQU 10 ADR1 EQU DS:BP+14H ADR2 EQU CONST +10 COUN EQU VAR 同一符號(hào)不能用EQU重新定義。 匯編時(shí),作為替代符號(hào)用,不產(chǎn)生目標(biāo)代碼,不占用存儲(chǔ)單元。,2. 等號(hào)語(yǔ)句 格式: 符號(hào) = 表達(dá)式 CONT=5 NUM=10H NUM=NUM+20H 表達(dá)式形式同上,但可多次重新定義同一符號(hào)。,三、符號(hào)定義語(yǔ)句,例: DATA SEGMENT DA1 DB 9AH DA2 DW 5678H DA3 DD 12345678H DATA ENDS,變量的屬性:段屬性SEG 偏移屬性O(shè)FFSET 類(lèi)型屬性TYPE,四、數(shù)據(jù)定義語(yǔ)句,格式: 變量名 DB/DW/DD 表達(dá)式1,表達(dá)式2,. 保留存儲(chǔ)空間,并可以完成數(shù)據(jù)的初始化。,格式: 變量名 DB/DW/DD 表達(dá)式1,表達(dá)式2,. 表達(dá)式: (1)數(shù)值 (2)字符/字符串 (3)?表達(dá)式:分配相應(yīng)數(shù)量的存儲(chǔ)單元,但不初始化。 (4)帶DUP的表達(dá)式:使用重復(fù)數(shù)據(jù)操作符DUP,能方便地定義連續(xù)的存儲(chǔ)單元。 格式: 變量名 DB/DW/DD 表達(dá)式1, DUP(表達(dá)式2) 次數(shù) 內(nèi)容 操作符DUP可以嵌套使用: DA_B3 DB 10H DUP(4 DUP(3),8),四、數(shù)據(jù)定義語(yǔ)句,DA_BYTE1 DB 50H DA_BYTE2 DB 10H,20H,30H,40H DA_WORD1 DW 0A34H DA_WORD2 DW 1234H,5678H,9ABCH DA_DWORD DD 12345678H,9ABCDEFH,數(shù)值表達(dá)式,STRING1 DB STRING STRING2 DW ST,RI,NG STRING3 DD ST,RI,NG,字符串表達(dá)式,DA_BYTE3 DB ?,? DA_WORD3 DW ?,?,?表達(dá)式,DA_B1 DB 10H DUP(?) DA_B2 DB 20H DUP(ABCD) DA_W1 DW 10 DUP(4) DA_W2 DW 10 DUP(-1,1),帶DUP表達(dá)式,格式: 變量名 DB/DW/DD 表達(dá)式1, DUP(表達(dá)式2) 操作符DUP可以嵌套使用 DB 10H DUP(4 DUP(3),8); 3,3,3, 3, 8重復(fù)10H次,次數(shù),內(nèi)容,數(shù)據(jù)類(lèi)型,字節(jié) BYTE 1 字 WORD 2 雙字 DWORD 4 四字 QWORD 8 十字節(jié) TBYTE 10,DB DW DD DQ DT,1.常數(shù) 數(shù)值常數(shù):二、八、十、十六進(jìn)制 B,O,D,H 字符串常數(shù) 2. 變量 用數(shù)據(jù)定義語(yǔ)句定義并預(yù)置初值后,變量代表存儲(chǔ)單元的數(shù)據(jù),并作為該單元的符號(hào)地址。 變量引用: (1)在指令語(yǔ)句的操作數(shù)字段中,引用的變量名作為地址表達(dá)式的組成部分之一。 地址表達(dá)式的值:存放操作數(shù)的存儲(chǔ)單元偏移量。 地址表達(dá)式的類(lèi)型:同變量名的類(lèi)型。 (2)在用DW或DD的數(shù)據(jù)定義語(yǔ)句中,若操作數(shù)字段引用了變量名,則在分配的存儲(chǔ)單元中,預(yù)置被引用的變量名的地址部分 偏移量(DW ;DD,前兩個(gè)字節(jié)) 段基值(DD ,后兩個(gè)字節(jié)),五、匯編語(yǔ)言數(shù)據(jù)與運(yùn)算符,3. 標(biāo)號(hào):一條指令的符號(hào)地址。 段屬性 偏移屬性 類(lèi)型屬性 NEAR/FAR 類(lèi)型屬性設(shè)置: (1)隱含方式:NEXT:MOV AX, 3000 (2)用LABEL偽指令設(shè)置類(lèi)型屬性: 標(biāo)號(hào)偽指令LABEL格式: 名字 LABEL 類(lèi)型 與指令語(yǔ)句配合使用: 名字(新標(biāo)號(hào)) LABEL 類(lèi)型(NEAR/FAR) SUB1_FAR LABEL FAR SUB1: MOV AX,1234H 與數(shù)據(jù)定義語(yǔ)句配合使用: 名字(新變量名)LABEL 類(lèi)型(BYTE/WORD/DWORD) DATA _BYTE LABEL BYTE DATA _WORD DW 20H DUP(563H),運(yùn)算符,+ + * / MOD SHR SHL,運(yùn)算格式,運(yùn)算功能,+表達(dá)式 表達(dá)式 表達(dá)式1 + 表達(dá)式2 表達(dá)式1 表達(dá)式2 表達(dá)式1 * 表達(dá)式2 表達(dá)式1 / 表達(dá)式2 表達(dá)式1 MOD 表達(dá)式2 表達(dá)式1 SHR 次數(shù) 表達(dá)式1 SHL 次數(shù),正數(shù)(單項(xiàng)運(yùn)算符) 負(fù)數(shù)(單項(xiàng)運(yùn)算符) 加法 減法 乘法 除法(取商) 模除(取余數(shù)) 右移 左移,(1)算術(shù)運(yùn)算符,4. 運(yùn)算符,只有減法運(yùn)算可以用同一段內(nèi)的兩個(gè)變量相減,SHR、SHL不能對(duì)某寄存器或存儲(chǔ)單元內(nèi)容進(jìn)行移位運(yùn)算。,示例 NUM=11011011B DATA1 DW NUM SHL 3 , NUM SHR 2 . MOV AX , NUM SHL 3 MOV BX , NUM SHR 2 MOV CX , NUM SHL 8 MOV CX , NUM SHL 16 MOV DX , NUM SHR 8 MOV DX , NUM SHR 16 DATA1 DW 6D8H , 36H . MOV AX , 011011011000B MOV BX , 00110110B MOV CX , 1101101100000000B MOV CX , 0 MOV DX , 0 MOV DX , 0,算術(shù)運(yùn)算符,移位運(yùn)算符不能對(duì)寄存器或存儲(chǔ)單元進(jìn)行移位運(yùn)算 MOV AX,CX SHL 5 MOV DX,DATA1 SHR 3,邏輯運(yùn)算符只能對(duì)一個(gè)具體數(shù)據(jù)進(jìn)行邏輯運(yùn)算,不能對(duì)一個(gè)寄存器操作數(shù)或存儲(chǔ)器操作數(shù)進(jìn)行邏輯運(yùn)算。,示例 MOV AL , NOT 0F0H MOV DX , NOT 0F0H MOV BL , 55H OR 0F0H AND BH , 55H AND 0F0H XOR CX , 55H XOR 50H,MOV AL , 0FH MOV DX , 0FF0FH MOV BL , 0F5H AND BH , 50H XOR CX , 5,全1為真,全0為假 比較時(shí),若為常數(shù)按無(wú)符號(hào)數(shù)比較;如果是變量,按偏移量比較,示例 DATA SEGMENT ORG 10H NUM1=1234 NUM2=1234H DA_BYTE DB 10H DUP(0) DA_WORD DW 10H DUP(0) DA_VAR1 DW NUM2+DA_BYTE GT NUM1+DA_WORD DA_VAR2 DB NUM1 LE NUM2 DATA ENDS . MOV AX , NUM1 LT NUM2 MOV BL , NUM1 GE NUM2 MOV CX , DA_WORD GT DA_BYTE .,. DA_VAR1 DW 0FFFFH DA_VAR2 DB 0FFH . MOV AX , 0FFFFH MOV BL , 0 MOV CX , 0FFFFH .,可以對(duì)兩個(gè)常數(shù)進(jìn)行比較,不能用常數(shù)與偏移量進(jìn)行比較,格式: 運(yùn)算對(duì)象是存儲(chǔ)器操作數(shù),由變量名或標(biāo)號(hào)組成地址表達(dá)式 SEG : 返回變量所在的段值 OFFSET:返回變量所在偏移 TYPE:返回變量的類(lèi)型 LENGTH:返回?cái)?shù)組變量的元素個(gè)數(shù) SIZE:返回?cái)?shù)組變量所占的總字節(jié)數(shù) SIZE= TYPE* LENGTH,(4)數(shù)值返回運(yùn)算符,示例 假設(shè)DATA的段基址是7A4EH DATA SEGMENT ORG 30H DA1 DB 20H DUP(12H) DA2 DW DA1 . DATA ENDS . MOV AX , SEG DA1 MOV BX , SEG DA2 MOV SI , OFFSET DA1 MOV CX , DA2 MOV DI , OFFSET DA2 MOV DX , OFFSET DA1+4,MOV AX , 7A4EH MOV BX , 7A4EH MOV SI , 30H MOV CX , DA2 MOV DI , 50H MOV DX , 34H,用數(shù)字形式表示變量和標(biāo)號(hào)的類(lèi)型屬性,示例 DA_BYTE DB 12H DA_WORD DW 3456H DA_DWORD DD 789AH . MOV AL , TYPE DA_BYTE MOV BL , TYPE DA_WORD MOV CL , TYPE DA_DWORD . MOV AL , 1 MOV BL , 2 MOV CL , 4,LENGTH與SIZE運(yùn)算符,LENGTH運(yùn)算符 返回?cái)?shù)組變量的元素個(gè)數(shù) 如果變量用DUP定義,Length為外層DUP的值 如果沒(méi)有DUP定義,結(jié)果為1 SIZE運(yùn)算符 數(shù)組變量所占的總字節(jié)數(shù) SIZE是LENGTH和TYPE的乘積,示例 DATA SEGMENT VAR1 DB 10H DUP(0) VAR2 DB 10H, 20H, 30H, 40H VAR3 DW 10H DUP(A, 4 DUP(3) VAR4 DB COMPUTER . DATA ENDS . MOV AL , LENGTH VAR1 ; MOV AH , SIZE VAR1 ; MOV BL , LENGTH VAR2 ; MOV BH , SIZE VAR2 ; MOV CL , LENGTH VAR3 ; MOV CH , SIZE VAR3 ; MOV DL , LENGTH VAR4 ; MOV DH , SIZE VAR4 ;,(AL)=10H (AH)=10H (BL)=1 (BH)=1 (CL)=10H (CH)=20H (DL)=1 (DH)=1,例:求數(shù)組ARRAY的各數(shù)據(jù)項(xiàng)的累加和,從數(shù)組最后一個(gè)數(shù)據(jù)項(xiàng)開(kāi)始進(jìn)行累加。 ARRAY DW 20H DUP(4) . XOR AX , AX MOV SI , OFFSET ARRAY ADD SI , SIZE ARRAY - TYPE ARRAY MOV CX , LENGTH ARRAY LOP: ADD AX , SI SUB SI , TYPE ARRAY LOOP LOP,(5)屬性運(yùn)算符 PTR: 類(lèi)型 PTR 地址表達(dá)式 類(lèi)型可以是:BYTE ,WORD,DWORD 或NEAR FAR 僅在當(dāng)前語(yǔ)句中有效,是一種臨時(shí)設(shè)置。 DA_BYTE DB 20H DUP(0) DA_WORD DW 10H DUP(0) MOV WORD PTR DA_BYTE 10, AX ADD BYTE PTR DA_WORD DI, BL INC BYTE PTR SI SUB WORD PTRBX,30H JMP FAR PTR SUB1,THIS:THIS 類(lèi)型 THIS常與等值語(yǔ)句EQU一起用,形成新變量名或標(biāo)號(hào),使它們具有THIS后所指的類(lèi)型,而段基值和偏移量與緊接的變量名或標(biāo)號(hào)相同。 例: DATA _BYTE EQU THIS BYTE DATA _WORD DW 20H DUP(0) JUMP_FAR EQU THIS FAR JUMP_NEAR : XOR AX, AX,(6)分離字節(jié)運(yùn)算符 HIGH 表達(dá)式 LOW 表達(dá)式 分離運(yùn)算對(duì)象的高字節(jié)和低字節(jié)部分 表達(dá)式必須具有常量值,如常數(shù)、地址表達(dá)式的偏移量,不能是存儲(chǔ)器操作數(shù)或寄存器內(nèi)容.,示例 DATA SEGMENT ORG 20H CONST EQU 0ABCDH DATA1 DB 10H DUP(?) DATA2 DW 20H DUP(?) . DATA ENDS . MOV AH , HIGH CONST MOV AL , LOW CONST MOV BH , HIGH (OFFSET DATA1) MOV BL , LOW (OFFSET DATA2) MOV CL , LOW (CONST SHL 3),MOV AH , 0ABH MOV AL , 0CDH MOV BH , 0 MOV BL , 30H MOV CL , 68H,錯(cuò)誤: MOV CH, HIGH DATA1 MOV CL, LOW DATA1 MOV DH, HIGH BP MOV DL, LOW AX,存儲(chǔ)器,寄存器,六、段結(jié)構(gòu)偽指令,1. 段定義偽指令 段名 SEGMENT 定位類(lèi)型 組合類(lèi)型 類(lèi)別名 . 段名 ENDS 定位類(lèi)型(Align Type): PAGE(頁(yè)):本段從一個(gè)頁(yè)的邊界開(kāi)始,起始地址能被256整除。 PARA(節(jié)):本段從一個(gè)節(jié)的邊界開(kāi)始,起始地址能被16整除。 WORD(字):本段從偶字節(jié)地址開(kāi)始。 BYTE(字節(jié)):本段從任意地址開(kāi)始。,組合類(lèi)型(Combine Type): 表示段與段之間的連接: None:本段與其它段無(wú)連接關(guān)系,是獨(dú)立的。 PUBLIC:本段與其它同段名同類(lèi)型的段相連接在一起,然后為所有這些段指定一個(gè)共同的段基地址,形成一個(gè)新的邏輯段。 COMMON:本段與其它同段名同類(lèi)型的段設(shè)置相同的段基址,共享相同的存儲(chǔ)區(qū),段長(zhǎng)度由同名段中最大的段確定。(覆蓋段),組合類(lèi)型(Combine Type):,STACK:與PUBLIC段相似,但此段為堆棧段,系統(tǒng)自動(dòng)對(duì)SS寄存器和SP指針初始化。 AT表達(dá)式:本段的起始單元可以定位在表達(dá)式所示的節(jié)邊界上。 MEMORY:本段定位在所有其它段的最高地址,有多個(gè)段,只把第一個(gè)遇到的當(dāng)作此段。 類(lèi)別名(Class):用戶(hù)給定,在鏈接時(shí)把相同的段存儲(chǔ)在連續(xù)的存儲(chǔ)區(qū) 。,2. 段尋址偽指令 ASSUME 段寄存器名:段名,段寄存器名:段名,. DS_DATA SEGMENT VAR1 DB 12H DS_DATA ENDS ES_DATA SEGMENT VAR2 DB 34H ES_DATA ENDS CODE SEGMENT VAR3 DB 56H,ASSUME CS:CODE , DS:DS_DATA START: . INC VAR1 INC VAR2 INC VAR3 . CODE ENDS END START,可用關(guān)鍵字NOTHING取消前面的某些設(shè)置。 例: ASSUME DS:NOTHING;取消對(duì)DS的設(shè)置 ASSUME NOTHING; 取消全部4個(gè)段R的設(shè)置,,ES:ES_DATA,3.段寄存器的裝入 DS,ES的裝入 DATA_DS SEGMENT DB1 DB 10H DUP(?) DATA_DS ENDS DATA_ES SEGMENT DB2 DB 20H DUP(?) DATA_ES ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA_DS , ES:DATA_ES START: MOV AX , DATA_DS ;設(shè)置DS MOV DS , AX MOV AX , DATA_ES ;設(shè)置ES MOV ES , AX . CODE ENDS, SS的裝入 (1) STACK1 SEGMENT PARA STACK DW 20H DUP(?) STACK1 ENDS (2) STACK2 SEGMENT DW 30H DUP(?) TOP LABEL WORD STACK2 ENDS . CODE SEGMENT . MOV AX , STACK2 ;設(shè)置SS MOV SS , AX MOV SP , OFFSET TOP ;修改SP,自動(dòng)裝入,執(zhí)行程序 裝入, CS的裝入 (1) 結(jié)束偽指令 . CODE SEGMENT ASSUME CS:CODE , . START: . CODE ENDS END START (2)CALL,RET;JMP;IRET,七、過(guò)程定義偽指令 過(guò)程名 PROC NEAR/FAR . RET 過(guò)程名 ENDP 有三個(gè)屬性 一個(gè)過(guò)程內(nèi),至少有一條返回指令RET 調(diào)用過(guò)程使用CALL 過(guò)程名 段內(nèi)返回與段間返回,八、其它偽指令,1. ORG , $ ORG 表達(dá)式 將表達(dá)式的值賦給位置計(jì)數(shù)器 $ 存放位置計(jì)數(shù)器的當(dāng)前值,DATA SEGMENT ORG 30H ;$=30H DB1 DB 12H , 34H ;$=32H ORG $+20H ;$=52H STRING DB STRING . DATA ENDS -,ORG , $舉例,CODE SEGMENT . ORG 50H MOV AX , OFFSET $ MOV BX , OFFSET $ . CODE ENDS,MOV AX , 0050H MOV BX , 0053H,DATA SEGMENT DA1 DB 10H DUP(?) DA2 DB 12H , 34H DA3 DW 56H , $+10H , 78H , $+20H . DATA ENDS,;$=10H,;$=12H,;$=1AH,八、其它偽指令,2. EVEN 偽指令 定位偶地址 3. INCLUDE偽指令 INCLUDE 文件名 INCLUDE 文件名 例:INCLUDE FILE.MAC INCLUDE B:MASMABC.ASM,4. PUBLIC PUBLIC 符號(hào)1,符號(hào)2, ,PUBLIC NUM1 , STRING , SUB1 , LOOP1 DATA1 SEGMENT NUM1 EQU 1234H . STRING DB CHARACTER STRING . DATA1 ENDS . CODE1 SEGMENT . SUB1 PROC FAR . SUB1 ENDP LOOP1: . . CODE1 ENDS END,5. EXTRN 偽指令 EXTRN 符號(hào) 1:類(lèi)型 ,符號(hào) 2: 類(lèi)型, . . 例:,EXTRN NUM1:ABS , STRING:BYTE EXTRN SUB1:FAR , LOOP1:NEAR : CODE2 SEGMENT : MOV AX , NUM1 LEA BX , STRING : CALL SUB1 : JMP FAR PTR LOOP1 : CODE2 ENDS END,八、其它偽指令,5. TITLE (標(biāo)題)偽指令,指定一個(gè)標(biāo)題 格式:TITLE 文本 字符不超過(guò)80個(gè) 例: TITLE EXAMPLE PROGRAM,九、宏指令,例: MULTAX10 MACRO PUSH BX SAL AX,1 MOV BX,AX SAL AX,1 SAL AX,1 ADD AX,BX POP BX ENDM,九、宏指令 1. 宏定義 宏名 MACRO 形參1,形參2,. . ENDM,EXCHANG EMACRO MEM1,MEM2,REG MOV REG,MEM1 XCHG REG,MEM2 MOV MEM1,REG ENDM,2. 宏調(diào)用 宏名 實(shí)參1,實(shí)參2,. EXCHANGE DA_BY1 , DA_BY2 , AL 3. 宏展開(kāi),;宏定義 MULTAX10 MACRO PUSH BX SAL AX,1 MOV BX,AX SAL AX,1 SAL AX,1 ADD AX,BX POP BX ENDM ;- EXCHANGE MACRO MEM1,MEM2,REG MOV REG,MEM1 XCHG REG,MEM2 MOV MEM1,REG ENDM,;設(shè)置數(shù)據(jù)段 DATA SEGMENT DA_W01 DW 1234H DA_W02 DW 5678H DATA ENDS ;設(shè)置堆棧段 STACK1 SEGMENT PARA STACK DW 20H DUP(?) STACK1 ENDS ;設(shè)置代碼段 COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1 START: MOV AX , DATA MOV DS , AX . MULTAX10 ;宏指令語(yǔ)句 + PUSH BX + SAL AX , 1,+ MOV BX , AX + SAL AX , 1 + SAL AX , 1 + ADD AX , BX + POP BX . EXCHANGE DA_W01 , DA_W02 , CX :宏指令語(yǔ)句 + MOV CX , DA_W01 + XCHG CX , DA_W02 + MOV DA_W01 , CX . COSEG ENDS END START,4. 宏操作符 連接操作符 & 定義:SHIFT_VAR MACRO R_M , DIRECT, COUNT MOV CL , COUNT S&DIRECT R_M , CL ENDM 調(diào)用:SHIFT_VAR AX,HL,2 SHL AX,CL SHIFT_VAR AX,HR,2 SHR AX,CL,SHIF0 MACRO CNT MOV CL , CNT ENDM SHIF1 MACRO REG , DIRECT , NUM COUNT=NUM SHIF0 %COUNT S宏調(diào)用 SHIF1 AX , HL , 2 SHIF1 BL , AR , 3,表達(dá)式操作符 % 格式:%表達(dá)式;獲取表達(dá)式的值(出現(xiàn)在宏調(diào)用中),;宏展開(kāi) SHIF1 AX , HL , 2 + MOV CL , 2 + SHL AX , CL SHIF1 BL , AR , 3 + MOV CL , 3 + SAR BL , CL,文本操作符 EXCHANGE ,AL 宏展開(kāi) MOV AL , BYTE PTR DA_WORD1 XCHG AL , BYTE PTR DA_WORD2 MOV BYTE PTR WORD1 , AL 字符操作符 ! 格式: !字符 宏定義:PROMPT MACRO NUM , TEXT PROMP,5. LOCAL偽指令,LOCAL 在匯編過(guò)程中,宏定義中的內(nèi)容會(huì)在每一次宏調(diào)用處展開(kāi)。因此當(dāng)多次調(diào)用一個(gè)宏時(shí),宏定義中的標(biāo)號(hào)會(huì)造成標(biāo)號(hào)重復(fù)定義。 在宏定義中使用LOCAL偽指令可以使標(biāo)號(hào)被局部化,從而避免重復(fù)定義。 LOCAL偽指令只能用在宏定義中,并且它必須是宏定義中緊跟在MACRO偽指令之后的第一個(gè)語(yǔ)句。,用連續(xù)相加的辦法實(shí)現(xiàn)無(wú)符號(hào)數(shù)乘法運(yùn)算 MULTIP MACRO MULT1 , MULT2 , MULT3 LOCAL LOP , EXIT0 MOV DX , MULT1 MOV CX , MULT2 XOR BX , BX XOR AX , AX JCXZ EXIT0 LOP: ADD BX , DX ADC AX , 0 LOOP LOP EXIT0: MOV MULT3 , BX MOV MULT3+2 , AX ENDM,設(shè)數(shù)據(jù)段有

溫馨提示

  • 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)論