計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ)_第1頁(yè)
計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ)_第2頁(yè)
計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ)_第3頁(yè)
計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ)_第4頁(yè)
計(jì)算機(jī)原理與匯編匯編語(yǔ)言基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ǔ)句匯編語(yǔ)言:指令

變量說(shuō)明/史義分配寄存器

inty,a=25,b=3,c=76;分配存儲(chǔ)單元

給變量賦值數(shù)據(jù)傳遹

y=2(a+b)-c

2.匯編程序結(jié)構(gòu)

數(shù)據(jù)段

堆找段

代碼段

第四章匯編語(yǔ)言

示例:y=2(a+b)-c

;設(shè)置數(shù)據(jù)段

DATASEGMENT

ADB25;數(shù)據(jù)A

BDB3;數(shù)據(jù)B

CDB76;數(shù)據(jù)C

YDB?■;存放結(jié)果

DATAENDS

;設(shè)置堆棧段

STACK1SEGMENTPARASTACK

DW20HDUP(O)

STACK1ENDS

第四章匯編語(yǔ)言

示例:

;設(shè)置代碼段

COSEGSEGMENT

ASSUMECS:COSEG,DS:DATA,SS:STACK1

START:MOVAX,DATA;裝填段寄存器DS

MOVDS,AX

MOVAL,A;取數(shù)據(jù)A

ADDAL,B;計(jì)算(A+B)

SALAL,1;計(jì)算2(A+B)

SUBAL,C;計(jì)算2(A+B)-C

MOVY,AL;存結(jié)果

;結(jié)束用戶程序,返回操作系統(tǒng)

MOVAH,4CH

INT21H

COSEGENDS

ENDSTART

第四章匯編語(yǔ)言

匯編語(yǔ)言與機(jī)器語(yǔ)言

?匯編語(yǔ)言:

?是匯編格式指令,偽指令的集合及其表示,使用這些指

令的一組規(guī)則。

?機(jī)器語(yǔ)言:

?用二進(jìn)制編巧的機(jī)器指令的集合及一組使用規(guī)則,它是

CPU能直接識(shí)別的唯一語(yǔ)言。

?MOVDS,AX匯編語(yǔ)言

?8ED8機(jī)器語(yǔ)言(目標(biāo)代延J

—ucs:017MOU

0C0F:0000B80A0CMOUAX,砒。A

0C0F:00038EDSMOUDS.AX

0C0F:0005A00000ADDAL.[0000]

0C0F:000802060100SHLAL.[00011

0C0F:000CD0E0SUBfiL.l

0C0F:000E2A060200HOUAL,[0002]

0C0F:0012A20300MOU[0003AL

0C0F:0015B44CINTAH,4C

0C0F:0017CD2121

第四章匯編語(yǔ)言

匯編語(yǔ)言與目標(biāo)代嗎的對(duì)應(yīng)

數(shù)據(jù)A址DO}SALAL,1

數(shù)據(jù)B增EO^

數(shù)據(jù)C方

數(shù)據(jù)D向

>SUBAL,C

Y

MOVAX,DATA

aMOVY,AL

0?

MOVDS,DXB4LMOVAH,4CH

4C

CDLINT21H

MOVAL,A

ADDAL,B

第四章匯編語(yǔ)言

匯編語(yǔ)言特點(diǎn)

口與機(jī)器語(yǔ)言相關(guān)

效率高

□編寫(xiě)源程序繁瑣

□調(diào)試?yán)ь?/p>

匯編語(yǔ)言的主要應(yīng)用場(chǎng)合:

C1J程序執(zhí)行占用較短的時(shí)間,或者占用較小存儲(chǔ)余量的場(chǎng)合。

(2)程序與計(jì)算機(jī)硬件密切相關(guān),程序直接控制硬件的場(chǎng)合。

C3J需提高大型軟件性能的場(chǎng)合。

(4)沒(méi)有合適的高級(jí)語(yǔ)言的場(chǎng)合。

第四章匯編語(yǔ)言

二、匯編語(yǔ)言語(yǔ)句種類(lèi)

語(yǔ)句種類(lèi)

指令語(yǔ)句:又叫可執(zhí)行語(yǔ)句,在匯編時(shí)產(chǎn)生一個(gè)

目林代碼,對(duì)應(yīng)機(jī)器的一種操作。

偽指令語(yǔ)句:又叫命令語(yǔ)句。用于指示匯編程序

如何匯編源程序,沒(méi)有目標(biāo)代碼與之對(duì)應(yīng)。

宏指令語(yǔ)句:由用戶自定義的指令。r指令的疔

展)

皿陽(yáng)備UM理8啊/第四章匯編語(yǔ)言

二、匯編語(yǔ)言語(yǔ)句格式

?格式:

名字操作符操作教;注希

[標(biāo)號(hào):]助記符[操作教L操作教]心注釋?zhuān)?/p>

[名字]走義符[參數(shù),…,參教][;注釋?zhuān)?/p>

?命名規(guī)則:

可以用?,@」數(shù)室和美文字符。

名字的第一個(gè)字符不能是教字。

名字的長(zhǎng)度不受F艮制,但只有箭'31個(gè)字符有效。

不允許用保留字作名字(指令,偽指令,寄存器名等)o

第四章匯編語(yǔ)言

指令語(yǔ)句:[標(biāo)號(hào):]肋記符[操作教L操作教]][;注斡]

1、標(biāo)號(hào):標(biāo)號(hào)是機(jī)器指令語(yǔ)句存放地址的符號(hào)表示,

代表該指令目標(biāo)代碼的第一個(gè)字節(jié)地址,后面必須緊

跟冒號(hào)“:”O(jiān)

2.指令助記符:指令肋記符為語(yǔ)句的核心成分,表

示了該語(yǔ)句的操作類(lèi)型。“MOV”

3.操作教:操作教表示指令助記符的操作對(duì)象。

4,注羚:注絳均以分號(hào)開(kāi)始,它可占~行或多行,

~般放^在~條語(yǔ)句的后面。

第四章匯編語(yǔ)言

偽指令語(yǔ)句:[名狗定義符[參數(shù),…,參數(shù)][;注譯]

L名字(符號(hào)名):偽指令語(yǔ)句的一個(gè)可選項(xiàng),空格

表示結(jié)束,不得使用冒號(hào)。

2、定義符(偽指令符):指定匯編程序要完成的具體

操作,如數(shù)據(jù)定義偽指令DB、DW、DD,段定義偽指

令SEGMENT,假定偽指令A(yù)SSUME等。

3.參教(操作教):偽指令后面的操作教可以是常教、

字符串、變量、表達(dá)式等,其個(gè)數(shù)由具體的偽指令決

定,各個(gè)操作數(shù)之間必須以“退號(hào)”分隔。

4.注樣:偽指令的注絳必須以'”開(kāi)始,其作用同

指令語(yǔ)句中的注絳部分。

第四章匯編語(yǔ)言

三、符號(hào)定義語(yǔ)句

1.等值語(yǔ)句

?格式:符號(hào)EQU表達(dá)式

表達(dá)式:常數(shù)或數(shù)值表達(dá)式

地址表達(dá)式

變量或標(biāo)號(hào)

CONSTEQU10

ADRIEQUDS:[BP+14H]

ADR2EQUCONST+10

COUNEQUVAR

同一符號(hào)不能用EQU重新定義。

匯編時(shí),作為替代符號(hào)用,不產(chǎn)生目標(biāo)代碼,不占

用存儲(chǔ)單元。

第四章匯編語(yǔ)言

?一>符號(hào)定義語(yǔ)句

?2.等號(hào)語(yǔ)句

?格式:符號(hào)=表達(dá)式

?C0NT=5

?NUM=10H

?NUM=NUM+20H

?表達(dá)式形式同上,但可多次重新定義同?

行虧。

第四章匯編語(yǔ)言

四、數(shù)據(jù)定義語(yǔ)句

格式:變量名DB/DW/DD表達(dá)式1,表達(dá)式2,…

保留存儲(chǔ)空間,并可以完成數(shù)據(jù)的初始化。

例:

DATASEGMENT

DA1DB9AH

DA2DW5678H

DA3DD12345678H

DATAENDS

變量的屬性:段屬性SEG

偏移屬性。FFSET

類(lèi)型屬性TYPE

第四章匯編語(yǔ)言

四、數(shù)據(jù)定義語(yǔ)句

?格式:變量名DB/DW/DD表達(dá)式J,表達(dá)式2,…

表達(dá)式:

⑴教值

⑵字符/字符串

(3)?表達(dá)式:分配相應(yīng)數(shù)量的存儲(chǔ)單元,但不初始化。

(4)帶DUP的表達(dá)式:使用重復(fù)數(shù)據(jù)操作符DUP,能方便

地定義連續(xù)的存儲(chǔ)單元。

格式:變量名DB/DW/DD表達(dá)式J,DUP(表達(dá)式2)

次教內(nèi)<

操作符DUP可以嵌套使用:

DAB3DB10HDUP(4DUP(3),8)

第四章匯編語(yǔ)言

DABYTElDB50H數(shù)值表達(dá)式

DA*YTE2DB10H,20H,30H,40HHz

DA^WORDlDW0A34H/

DA]WORD2DW1234H,5678H,9ABCH

DAZDWORDDD12345678H,9ABCDEFH

字符串表達(dá)式、

STRING1DB'STRING'

STRING!DW6ST\RT,NG,

STRINGSDD'ST',RI','NG'

]?表達(dá)式'

DABYTE3DB?,?

DAWORD3DW?,?

第四章匯編語(yǔ)言

STRING!STRING3

STRING1

第四章匯編語(yǔ)言

帶DUP表達(dá)式

DABlDB10HDUP(?7一

DA]B2DB20HDUPCABCD,)

DA]WIDW10DUP(4)

DAW2DW10DUP(-IJ)

內(nèi)容

格式:變量名DB/DW/DD表達(dá)式1,DUP(表達(dá)式2)

操作符DUP可以嵌套使用

DB10HDUP(4DUP(3),8);3,3,3,3,8重復(fù)10H次

第四章匯編語(yǔ)言

數(shù)據(jù)類(lèi)型

字節(jié)BYTE1DB

字WORD2DW

雙字DWORD4DD

四字QWORD8DQ

十字節(jié)TBYTE10DT

第四章匯編語(yǔ)言

五、匯編語(yǔ)言數(shù)據(jù)與運(yùn)算符

1.常教數(shù)值常教:二、八、十、十六進(jìn)制B,O,D,H

字符串常教

2.變量

用數(shù)據(jù)定義語(yǔ)句定義并預(yù)置初值后,變量代表存儲(chǔ)單元的教

據(jù),并作為該單元的符號(hào)地址。

變量引用:

在指令語(yǔ)句的操作數(shù)字段中,引用的變量名作為地址表

達(dá)式的組成部分之一。

地址表達(dá)式的值:存放操作數(shù)的存儲(chǔ)單元偏移量。

地址表達(dá)式的類(lèi)型:同變量名的類(lèi)型。

(2)在用DW或DD的數(shù)據(jù)定義語(yǔ)句中,若操作教字段引用

了變量名,則在分配的存儲(chǔ)單元中,預(yù)置被引用的變量名的

地址部分偏移量fDW;DD,前兩個(gè)字節(jié))

——段基值CDD,后兩個(gè)字節(jié))

皿陽(yáng)備UM理8啊/第四章匯編語(yǔ)言

3.標(biāo)號(hào):一條指令的符號(hào)地址。

?段屬性

?偏移屬性

?類(lèi)型屬性NEAR/FAR

?類(lèi)型屬性設(shè)置:

?C1J隱、合方式:NEXT:MOVAX,3000

?(2)用LABEL偽指令設(shè)置類(lèi)型屬性:

?標(biāo)號(hào)偽指令LABEL格式:

?名字LABEL類(lèi)型

?與指令語(yǔ)句配合使用:

?名字(新標(biāo)號(hào))LABEL類(lèi)型CNEAR/FARJ

?SUB1_FARLABELFAR

?SUB1:MOVAX,1234H

?與數(shù)據(jù)定義語(yǔ)句配合使用:

?名字(新變量名)LABEL類(lèi)型CBYTE/WORD/DWORDJ

?DATA_BYTELABELBYTE

?DATAWORDDW20HDUPC563HJ

第四章匯編語(yǔ)言

4.運(yùn)算符C1J算術(shù)運(yùn)算符

運(yùn)算符運(yùn)算格式運(yùn)算功能

++表達(dá)式正教r單項(xiàng)運(yùn)算符)

-表達(dá)式j(luò)負(fù)教(單項(xiàng)運(yùn)算符)

+表達(dá)式1+表達(dá)式2加法

表達(dá)式1-表達(dá)式2戒法

*表達(dá)式1*表達(dá)式2乘法

/表達(dá)式1/表達(dá)式2除法(取商)

MOD表達(dá)式1MOD表達(dá)式2模除(取余數(shù))

SHR表達(dá)式1SHR次教右移

SHL表達(dá)式1SHL次教左移

只有臧法運(yùn)算可以用同一段內(nèi)的兩個(gè)變量相戒

SHR、SHL不能對(duì)某寄存器或存儲(chǔ)單元內(nèi)余進(jìn)行移住運(yùn)算。

皿陽(yáng)備UM理8啊/第四章匯編語(yǔ)言

示例

NUM=11011011B

DATA1DWNUMSHL3,NUMSHR2

MOVAX,NUMSHL3

MOVBX,NUMSHR2

MOVCX,NUMSHL8

MOVCX,NUMSHL16

MOVDX,NUMSHR8

MOVDX,NUMSHR16

DATA1DW6D8H,36H

???

MOVAX5011011011000B

MOVBX,00110110B

MOVCX,1101101100000000B

MOVCX,0

MOVDX,0

MOVDX,0

第四章匯編語(yǔ)言

算術(shù)運(yùn)算符

?移位運(yùn)算符不能對(duì)寄存器或存儲(chǔ)單元進(jìn)行

移住運(yùn)算

MOVAX,CXSHL5

MOVDX,DATA1SHR3

第四章匯編語(yǔ)言

(2)近春運(yùn)算符

運(yùn)算符運(yùn)算格式___________運(yùn)算功能

NOTNOT表達(dá)式之梅非

AND表達(dá)式1AND表達(dá)式2謖子耳與

OR表達(dá)式1OR表達(dá)式2遂子耳或

XOR表達(dá)式1XOR表達(dá)式2謖握異或

近轉(zhuǎn)運(yùn)算符只能對(duì)一個(gè)具體數(shù)據(jù)進(jìn)行近轉(zhuǎn)運(yùn)算,不能對(duì)一

個(gè)寄存器操作數(shù)或存儲(chǔ)器操作教進(jìn)行邏輯運(yùn)算。

要援學(xué)孝關(guān)摩

皿陽(yáng)備UM理8啊/第四章匯編語(yǔ)言

示例

MOVAL,NOTOFOH

MOVDX,NOTOFOH

MOVBL,55HOROFOH

ANDBH,55HANDOFOH

XORCX,55HXOR50H

MOVAL,OFH

MOVDX,OFFOFH

MOVBL,0F5H

ANDBH,50H

XORCX,5

第四章匯編語(yǔ)言

(3)關(guān)余運(yùn)算符

運(yùn)算符運(yùn)算格式運(yùn)算功能

EQ表達(dá)式1EQ表達(dá)式2兩個(gè)表達(dá)式相等為真

NE表達(dá)式1NE表達(dá)式2兩個(gè)表達(dá)式不相等為真

LT表達(dá)式1LT表達(dá)式2表達(dá)式1<表達(dá)式2為工

LE表達(dá)式1LE表達(dá)式2表達(dá)式1<=表達(dá)式2為真

GT表達(dá)式1GT表達(dá)式2表達(dá)式1>表達(dá)式2為真

GE表達(dá)式1GE表達(dá)式2表達(dá)式1>=表達(dá)式2為真

全1為真,會(huì)。為假

比較時(shí),若為常數(shù)按無(wú)符號(hào)數(shù)比較;如果是變量,按偏移

量比較

皿陽(yáng)備UM理8啊/第四章匯編語(yǔ)言

示例

DATASEGMENT

ORG10H

NUM1=1234

NUM2=1234H

DABYTEDB10HDUP(O)

DA^WORDDW10HDUP(O)

DA]VAR1DWNUM2+DABYTEGTNUMl+DAWOR

DAVAR2DBNUM1LENUM2

DATAENDS

MOVAX,NUM1LTNUM2

MOVBL,NUM1GENUM2

MOVCX,DAWORDGTDABYTE

第四章匯編語(yǔ)言

DAVARlDWOFFFFH

DAVAR2DBOFFH

MOVAX,OFFFFH

MOVBL,0

MOVCX,OFFFFH

可以對(duì)兩個(gè)常數(shù)進(jìn)行比較,不能用常數(shù)與偏移量進(jìn)行比較

第四章匯編語(yǔ)言

C4J數(shù)值返回運(yùn)算符

格式:V運(yùn)算符〉V地址表達(dá)式〉

運(yùn)算對(duì)象是存儲(chǔ)器操作教,由變量名或標(biāo)號(hào)組成地

址表達(dá)式

?SEG:返回變量所在的段值

?OFFSET:返回變量所在偏移

?TYPE:返回變量的類(lèi)型

?LENGTH:返回?cái)?shù)組變量的元素個(gè)數(shù)

?SIZE:返回?cái)?shù)組變量所占的總字節(jié)教

SIZE=TYPE*LENGTH

第四章匯編語(yǔ)言

示例假設(shè)DATA的段基址是7A4EH

DATASEGMENT

ORG30H

DAIDB20HDUP(12H)

DA2DWDAI

DATAENDS

MOVAX,SEGDAIMOVAX,7A4EH

MOVBX,SEGDA2MOVBX,7A4EH

MOVSI,OFFSETDAIMOVSI,30H

MOVCX,DA2MOVCX,DA2

MOVDI,OFFSETDA2MOVDI,50H

MOVDX,OFFSETDA1+4MOVDX,34H

第四章匯編語(yǔ)言

TYPE運(yùn)算符

類(lèi)型屬性運(yùn)算結(jié)果

變量BYTE1

WORD2

DWORD4

■NEAR-1

FAR-2

用數(shù)字形式表示變量和標(biāo)號(hào)的類(lèi)型屬性

第四章匯編語(yǔ)言

示例

DABYTEDB12H

DA]WORDDW3456H

DA]DWORDDD789AH

MOVAL,TYPEDABYTE

MOVBL,TYPEDATWORD

MOVCL,TYPEDA-DWORD

MOVAL,1

MOVBL,2

MOVCL,4

第四章匯編語(yǔ)言

LENGTH與SIZE運(yùn)算符

?LENGTH運(yùn)算符

返回教組變量的元素個(gè)教

如果變量用DUP定義,Length為外層DUP的值

如果沒(méi)有DUP定義,結(jié)果為1

?SIZE運(yùn)算符

教組變量所占的總字節(jié)教

SIZE是LENGTH和TYPE的乘積

第四章匯編語(yǔ)言

示例

DATASEGMENT

VARIDB10HDUP(O)

VAR2DB10H,20H,30H,40H

VAR3DW10HDUP('A14DUP(3))

VAR4DBCOMPUTER,

???

DATAENDS

???

MOVAL,LENGTHVARI;(AL尸1OH

MOVAH,SIZEVARI;(AH尸1OH

MOVBL,LENGTHVAR2;(BL尸1

MOVBH,SIZEVAR2;(BH)=1

MOVCL,LENGTHVAR3;(CL尸1OH

MOVCH,SIZEVAR3;(CH尸20H

MOVDL,LENGTHVAR4;(DL尸1

MOVDH?SIZEVAR4;(DH1

第四章匯編語(yǔ)言

例:求教組ARRAY的各數(shù)據(jù)項(xiàng)的累加和,從教組最后

一個(gè)數(shù)據(jù)項(xiàng)開(kāi)始進(jìn)行累加。

ARRAYDW20HDUP(4)

XORAX,AX

MOVSI,OFFSETARRAY

ADDSI,SIZEARRAY-TYPEARRAY

MOVCX,LENGTHARRAY

LOP:ADDAX,[SI]

SUBSI,TYPEARRAY

LOOPLOP

第四章匯編語(yǔ)言

(5)屬性運(yùn)算符

PTR:類(lèi)型PTR地址表達(dá)式

類(lèi)型可以是:BYTE9WORD9DWORD或NEARFAR

僅在當(dāng)前語(yǔ)句中有效,是一種臨時(shí)設(shè)置。

DABYTEDB20HDUP(O)

DA]WORDDW10HDUP(O)

MOVWORDPTRDABYTE[10],AX

ADDBYTEPTRDAWORD[DI],BL

INCBYTEPTR[SI]一

SUBWORDPTR[BX],30H

JMPFARPTRSUB1

第四章匯編語(yǔ)言

THIS:THIS類(lèi)型

?THIS常與等值語(yǔ)句EQU一起用,形成新變量名或

標(biāo)號(hào),使它們具有THIS后所指的類(lèi)型,而段基值

和偏移量與緊接的變量名或標(biāo)號(hào)相同。

?例:

?DATA_BYTEEQUTHISBYTE

?DATA_WORDDW20HDUPCOJ

?JUMP_FAREQUTHISFAR

?JUMPNEAR:XORAX,AX

MNaUM理B啊/第四章匯編語(yǔ)言

(6J分離字節(jié)運(yùn)算符

HIGH表達(dá)式

LOW表達(dá)式

分離運(yùn)算對(duì)象的離字節(jié)和低字節(jié)部分

表達(dá)式必須具有常量值,如常教、地址表達(dá)

式的偏移量,不能是存儲(chǔ)器操作教或寄存器

內(nèi)余.

皿陽(yáng)備UM理8啊/第四章匯編語(yǔ)言

示例

DATASEGMENT

ORG20H

CONSTEQUOABCDH

MOVAH,OABH

DATA1DB10HDUP(?)

MOVAL,OCDH

DATA2DW20HDUP(?)

MOVBH,0

MOVBL,30H

DATAENDS

MOVCL,68H

MOVAH,HIGHCONST

MOVAL,LOWCONST

MOVBH?HIGH(OFFSETDATA1)

MOVBL,LOW(OFFSETDATA2)

MOVCL,LOW(CONSTSHL3)

第四章匯編語(yǔ)言

錯(cuò)誤:

MOVCH,HIGHDATA1

i>存儲(chǔ)器

MOVCL,LOWDATA1

MOVDH,HIGHBP

?—寄存器

MOVDL,LOWAX

第四章匯編語(yǔ)言

(7)運(yùn)算符的優(yōu)先級(jí)

優(yōu)先級(jí)別運(yùn)算符

(最高)1LENGTH,SIZE

2PTR,OFFSET,SEG,TYPE?THIS

3HIGH,L0W

4+,-(單項(xiàng)運(yùn)算符)

5*,/,MOD,SHR,SHL

6+,~

7EQ,NE,LT,LE,GT,GE

8NOT

9AND

(最低)10OR,XOR

第四章匯編語(yǔ)言

六、段結(jié)構(gòu)偽指令

1.段定義偽指令

段名SEGMENT[定住類(lèi)型][組合類(lèi)型]['類(lèi)別名']

■■■

段名ENDS

?定位類(lèi)型(AlignType):

PAGE(頁(yè)):本段從一個(gè)頁(yè)的邊界開(kāi)始,起始地址能被

256整除。

PARA(節(jié)):本段從~個(gè)節(jié)的邊界開(kāi)始,起始地址能被

16整除。

WORD(字):本段從偶字節(jié)地址開(kāi)始。

BYTE(字節(jié)):本段從任意地址開(kāi)始。

第四章匯編語(yǔ)言

?組合類(lèi)型(CombineType):

表示段與段之間的連接:

None:本段與其它段無(wú)連接關(guān)宗,是獨(dú)立的。

PUBLIC:本段與其它同段名同類(lèi)型的段相連接在一起

,然后為所有這些段指定~個(gè)共同的段基地址,形成一

個(gè)新的近新段。

COMMONt本段與其它同段名同類(lèi)型的段設(shè)置相同的

段基址,共享相同的存儲(chǔ)區(qū),段長(zhǎng)度由同名段中最大的

段確定。(覆蓋段)

皿陽(yáng)備UM理8啊/第四章匯編語(yǔ)言

組合類(lèi)型(CombineType):

?STACK:與PUBLIC段相似,但此段為堆找

段,系統(tǒng)自動(dòng)對(duì)SS寄存器和SP指針初始化。

?AT表達(dá)式:本段的起始單元可以定位在表

達(dá)式所示的節(jié)邊界上。

?MEMORY:本段定伉在所有其它段的最高

地址,有多個(gè)段,只把第?個(gè)遇到的當(dāng)作

此段。

類(lèi)別名(Class):用戶給定,在鏈接時(shí)把相同

的段存儲(chǔ)在連續(xù)的存儲(chǔ)區(qū)。

第四章匯編語(yǔ)言

2.段尋址偽指令

ASSUME段寄存器名:段名,段寄存器名:段名,.

DSDATASEGMENT

VARIDB12H

DSDATAENDS

ES^DATASEGMENT

VAR2DB34H

ESDATAENDS

CODESEGMENT

VAR3DB56H

第四章匯編語(yǔ)言

ASSUMECS:CODE?DS:DS_DATA,ES:ES_DATA

START:……

???

INCVARI

INCVAR2

INCVAR3

???

CODEENDS

ENDSTART

?可用關(guān)鍵字NOTHING取請(qǐng)前面的某些設(shè)置。

例:ASSUMEDS:NOTHING;取消對(duì)DS的設(shè)置

ASSUMENOTHING;取消全部4個(gè)段R的設(shè)置

皿陽(yáng)備UM理8啊/第四章匯編語(yǔ)言

3.段寄存器的裝入

<1>DS,ES的裝入

DATADSSEGMENT

DB1一DB10HDUP(?)

DATADSENDS

DATAESSEGMENT

DB2一DB20HDUP(?)

DATAESENDS

CODFSEGMENT

ASSUMECS:CODE,DS:DATA_DS,ES:DATA_ES

START:MOVAX,DATAJDS;設(shè)鱉DS

MOVDS,AX~

MOVAX,DATAJES;^SES

MOVESfAX

???

CODEENDS

第四章匯編語(yǔ)言

自動(dòng)

<2>SS的裝人裝入

(1)STACK1SEGMENTPARASTACK

DW20HDUP(?)r執(zhí)行程序'

STACK1ENDS裝入

,J

(2)STACK2SEGMENT

DW30HDUP(?)

TOPLABELWORD

STACK2ENDS

CODESEGMENT

MOVAX,STACK2;設(shè)置SS

MOVSS,AX

MOVSP,OFFSETTOP;修改SP

第四章匯編語(yǔ)言

<3>CS的裝人

(1)結(jié)束偽指令

???

CODESEGMENT

ASSUMECS:CODE,

???

START:

???

CODEENDS

ENDSTART

(2)CALL,RET;JMP;IRET

第四章匯編語(yǔ)言

七、過(guò)程定義偽指令

過(guò)程名PROC[NEAR/FAR]

???

RET

過(guò)程名ENDP

?有三個(gè)屬性

??個(gè)過(guò)程內(nèi),至少有?條返回指令RET

?調(diào)用過(guò)程使用CALL過(guò)程名

?段內(nèi)返回與段間返回

第四章匯編語(yǔ)言

入、其它偽指令

?1.ORG,$

ORG表達(dá)式

將表達(dá)式的值賦給優(yōu)置計(jì)數(shù)案

$存放位置計(jì)數(shù)器的當(dāng)前值

第四章匯編語(yǔ)言

?ORG,$舉例

DATASEGMENT

ORG30H;$=30H

DB1DB12H534H;$=32H

ORG$+20H;$=52H

STRINGDB"STRING5

???

DATAENDS

第四章匯編語(yǔ)言

DATASEGMENT

DAI1UHDTU-TTPTV(/C?X)X;$=___7/0/-f/'f'

DA2DB12H,34H;$=72H

DA3DW56H,$+10H,78H,$+20H;$=MH

???

DATAENDS

CODESEGMENT

ORG50H

MOVAX,OFFSET$

MOVBX,OFFSET$

???

CODEENDS

MOVAX,0050H

MOVBX90053H

第四章匯編語(yǔ)言

入、其它偽指令

?2.EVEN偽指令定位偶地址

?3.INCLUDE偽指令

INCLUDE文件名

INCLUDE文件名

例:INCLUDEFILE.MAC

INCLUDEB:\MASM\ABC.ASM

第四章匯編語(yǔ)言

4.PUBLIC

PUBLIC符號(hào)1,符號(hào)2,

PUBLICNUM1,STRING,SUB1,LOOP1

DATA1SEGMENT

NUM1EQU1234H

???

STRINGDB'CHARACTERSTRING'

DATA1ENDS

CODEISEGMENT

SUB1PROCFAR

SUB1ENDP

LOOP1:...

CODEIENDS

END

第四章匯編語(yǔ)言

5.EXTRN偽指令

EXTRN符號(hào)1:類(lèi)型,符號(hào)2:類(lèi)型,

畫(huà)、

4、EXTRNNUM1:ABS,STRING:BYTE

EXTRNSUB1:FAR,LOOP1:NEAR

C0DE2SEGMENT

MOVAX,NUM1

LEABX,STRING

CALLSUB1

JMPFARPTRL00P1

CODE2ENDS

END

第四章匯編語(yǔ)言

入、其它偽指令

?5.TITLE(標(biāo)題)偽指令,指定?個(gè)標(biāo)題

格式:TITLE文本

?字符不超過(guò)80個(gè)

例:

TITLEEXAMPLEPROGRAM

第四章匯編語(yǔ)言

九、宏指令

例:

MULTAX10MACRO

PUSHBX

SALAX,1

MOVBX,AX

SALAX,1

SALAX,1

ADDAX,BX

POPBX

ENDM

第四章匯編語(yǔ)言

九、宏指令

1.宏定義

宏名MACRO[形參1,形參2,…]

ENDM

EXCHANGEMACROMEM1,MEM2,REG

MOVREG,MEM1

XCHGREG,MEM2

MOVMEM1,REG

ENDM

皿陽(yáng)備UM理8啊/第四章匯編語(yǔ)言

2.宏調(diào)用宏名[賣(mài)參1,實(shí)參2,…]

EXCHANGEDABY1?DABY2,AL

3.宏展開(kāi)

皿陽(yáng)備UM理B啊/第四章匯編語(yǔ)言

;宏定義

MULTAX10MACRO___

PUSHBX

SALAX,1

MOVBX,AX

SALAX,1

SALAX,1

ADDAX,BX

POPBX

ENDM

EXCHANGEMACROMEM1,MEM2,REG

MOVREG,MEM1

XCHGREG,MEM2

MOVMEM1,REG

ENDM

第四章匯編語(yǔ)言

DATASEGMENT

DAWOlDW—1234H

DA502DW5678H

DATAENDS

;設(shè)置堆棧段

STACK1SEGMENTPARASTACK

DW20HDUP(?)

STACK1ENDS

;設(shè)置代碼段

COSEGSEGMENT

ASSUMECS:COSEG,DS:DATA,SS:STACK1

START:MOVAX,DATA

MOVDS,AX

???

MULTAX10;宏指令語(yǔ)句

+PUSHBX

+SALAXJ

第四章匯編語(yǔ)言

+MOVBX,AX

+SALAX,1

+SALAX,1

+ADDAX,BX

+POPBX

EXCHANGEDAW01,DAW02,CX:宏指令語(yǔ)句

+MOVCX?DAW01

+XCHGCX,DAW02

+MOVDAWOf,CX

COSEGENDS

ENDSTART

第四章匯編語(yǔ)言

4.宏操作符

?連接操作符&

定義:SHIFTVARMACRORM,DIRECT,COUNT

MOVCL,COUNT

S&DIRECTRM,CL

ENDM

調(diào)用:SHIFTVARAX,HL,2

SHLAX,CL

SHIFTVARAX,HR,2

SHRAX,CL

第四章匯編語(yǔ)言

表達(dá)式操作符%

格式:%表達(dá)灰;獲取表達(dá)式的值(出現(xiàn)在宏調(diào)用中)

SHIFOMACROCNT

MOVCL,CNT

ENDM

SHIF1MACROREG,DIRECT,

NUM

COUNT=NUM;宏展開(kāi)

SHIFO%COUNTSHIF1AX,HL,2

S&DIRECTREG,CL+MOVCL,2

ENDM+SHLAX,CL

宏調(diào)用SHIF1BL,AR,3

SHIF1AX,HL,2+MOVCL,3

SHIF1BL,AR,3+SARBL,CL

第四章匯編語(yǔ)言

?文本操作符V>

EXCHANGE<BYTEPTRDA_WORD1>,<BYTEPTRDA_W0RD2>,AL

宏展開(kāi)

MOVAL,BYTEPTRDAWORD1

XCHGAL,BYTEPTRDA]WORD2

MOVBYTEPTRWORD1-AL

?字符操作符!

格式:!字符

宏定義:PROMPTMACRONUM,TEXT

PROMP&NUMDB'&TEXT&'

ENDM

宏調(diào)用:PROMPT23,<Expression!>255>

宏展開(kāi):PROMPT23DB'Expression>2559

?宏注解符;;

第四章匯編語(yǔ)言

5.LOCAL偽指令

LOCALv符號(hào)表>

在匯編過(guò)程中,宏定義中的內(nèi)態(tà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ǔ)句。

第四章匯編語(yǔ)言

用連續(xù)相加的辦法實(shí)現(xiàn)無(wú)符號(hào)數(shù)乘法運(yùn)算

MULTIPMACROMULTI?MULT2,MULT3

LOCALLOP,EXITO

MOVDX,MULTI

MOVCX,MULT2

XORBX,BX

XORAX,AX

JCXZEXITO

LOP:ADDBX,DX

ADCAX,0

LOOPLOP

EXITO:MOVMULT3,BX

MOVMULT3+2,AX

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論