




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
匯編語言概述
~、概述
1.高級語言與匯編語言比較
高級語言:語句匯編語言:指令
變量說明/史義分配寄存器
inty,a=25,b=3,c=76;分配存儲(chǔ)單元
給變量賦值數(shù)據(jù)傳遹
y=2(a+b)-c
2.匯編程序結(jié)構(gòu)
數(shù)據(jù)段
堆找段
代碼段
第四章匯編語言
示例: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
第四章匯編語言
示例:
;設(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
第四章匯編語言
匯編語言與機(jī)器語言
?匯編語言:
?是匯編格式指令,偽指令的集合及其表示,使用這些指
令的一組規(guī)則。
?機(jī)器語言:
?用二進(jìn)制編巧的機(jī)器指令的集合及一組使用規(guī)則,它是
CPU能直接識別的唯一語言。
?MOVDS,AX匯編語言
?8ED8機(jī)器語言(目標(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
第四章匯編語言
匯編語言與目標(biāo)代嗎的對應(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
第四章匯編語言
匯編語言特點(diǎn)
口與機(jī)器語言相關(guān)
效率高
□編寫源程序繁瑣
□調(diào)試?yán)ь?/p>
匯編語言的主要應(yīng)用場合:
C1J程序執(zhí)行占用較短的時(shí)間,或者占用較小存儲(chǔ)余量的場合。
(2)程序與計(jì)算機(jī)硬件密切相關(guān),程序直接控制硬件的場合。
C3J需提高大型軟件性能的場合。
(4)沒有合適的高級語言的場合。
第四章匯編語言
二、匯編語言語句種類
語句種類
指令語句:又叫可執(zhí)行語句,在匯編時(shí)產(chǎn)生一個(gè)
目林代碼,對應(yīng)機(jī)器的一種操作。
偽指令語句:又叫命令語句。用于指示匯編程序
如何匯編源程序,沒有目標(biāo)代碼與之對應(yīng)。
宏指令語句:由用戶自定義的指令。r指令的疔
展)
皿陽備UM理8啊/第四章匯編語言
二、匯編語言語句格式
?格式:
名字操作符操作教;注希
[標(biāo)號:]助記符[操作教L操作教]心注釋]
[名字]走義符[參數(shù),…,參教][;注釋]
?命名規(guī)則:
可以用?,@」數(shù)室和美文字符。
名字的第一個(gè)字符不能是教字。
名字的長度不受F艮制,但只有箭'31個(gè)字符有效。
不允許用保留字作名字(指令,偽指令,寄存器名等)o
第四章匯編語言
指令語句:[標(biāo)號:]肋記符[操作教L操作教]][;注斡]
1、標(biāo)號:標(biāo)號是機(jī)器指令語句存放地址的符號表示,
代表該指令目標(biāo)代碼的第一個(gè)字節(jié)地址,后面必須緊
跟冒號“:”O(jiān)
2.指令助記符:指令肋記符為語句的核心成分,表
示了該語句的操作類型?!癕OV”
3.操作教:操作教表示指令助記符的操作對象。
4,注羚:注絳均以分號開始,它可占~行或多行,
~般放^在~條語句的后面。
第四章匯編語言
偽指令語句:[名狗定義符[參數(shù),…,參數(shù)][;注譯]
L名字(符號名):偽指令語句的一個(gè)可選項(xiàng),空格
表示結(jié)束,不得使用冒號。
2、定義符(偽指令符):指定匯編程序要完成的具體
操作,如數(shù)據(jù)定義偽指令DB、DW、DD,段定義偽指
令SEGMENT,假定偽指令A(yù)SSUME等。
3.參教(操作教):偽指令后面的操作教可以是常教、
字符串、變量、表達(dá)式等,其個(gè)數(shù)由具體的偽指令決
定,各個(gè)操作數(shù)之間必須以“退號”分隔。
4.注樣:偽指令的注絳必須以'”開始,其作用同
指令語句中的注絳部分。
第四章匯編語言
三、符號定義語句
1.等值語句
?格式:符號EQU表達(dá)式
表達(dá)式:常數(shù)或數(shù)值表達(dá)式
地址表達(dá)式
變量或標(biāo)號
CONSTEQU10
ADRIEQUDS:[BP+14H]
ADR2EQUCONST+10
COUNEQUVAR
同一符號不能用EQU重新定義。
匯編時(shí),作為替代符號用,不產(chǎn)生目標(biāo)代碼,不占
用存儲(chǔ)單元。
第四章匯編語言
?一>符號定義語句
?2.等號語句
?格式:符號=表達(dá)式
?C0NT=5
?NUM=10H
?NUM=NUM+20H
?表達(dá)式形式同上,但可多次重新定義同?
行虧。
第四章匯編語言
四、數(shù)據(jù)定義語句
格式:變量名DB/DW/DD表達(dá)式1,表達(dá)式2,…
保留存儲(chǔ)空間,并可以完成數(shù)據(jù)的初始化。
例:
DATASEGMENT
DA1DB9AH
DA2DW5678H
DA3DD12345678H
DATAENDS
變量的屬性:段屬性SEG
偏移屬性。FFSET
類型屬性TYPE
第四章匯編語言
四、數(shù)據(jù)定義語句
?格式:變量名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)
第四章匯編語言
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?,?
第四章匯編語言
STRING!STRING3
STRING1
第四章匯編語言
帶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次
第四章匯編語言
數(shù)據(jù)類型
字節(jié)BYTE1DB
字WORD2DW
雙字DWORD4DD
四字QWORD8DQ
十字節(jié)TBYTE10DT
第四章匯編語言
五、匯編語言數(shù)據(jù)與運(yùn)算符
1.常教數(shù)值常教:二、八、十、十六進(jìn)制B,O,D,H
字符串常教
2.變量
用數(shù)據(jù)定義語句定義并預(yù)置初值后,變量代表存儲(chǔ)單元的教
據(jù),并作為該單元的符號地址。
變量引用:
在指令語句的操作數(shù)字段中,引用的變量名作為地址表
達(dá)式的組成部分之一。
地址表達(dá)式的值:存放操作數(shù)的存儲(chǔ)單元偏移量。
地址表達(dá)式的類型:同變量名的類型。
(2)在用DW或DD的數(shù)據(jù)定義語句中,若操作教字段引用
了變量名,則在分配的存儲(chǔ)單元中,預(yù)置被引用的變量名的
地址部分偏移量fDW;DD,前兩個(gè)字節(jié))
——段基值CDD,后兩個(gè)字節(jié))
皿陽備UM理8啊/第四章匯編語言
3.標(biāo)號:一條指令的符號地址。
?段屬性
?偏移屬性
?類型屬性NEAR/FAR
?類型屬性設(shè)置:
?C1J隱、合方式:NEXT:MOVAX,3000
?(2)用LABEL偽指令設(shè)置類型屬性:
?標(biāo)號偽指令LABEL格式:
?名字LABEL類型
?與指令語句配合使用:
?名字(新標(biāo)號)LABEL類型CNEAR/FARJ
?SUB1_FARLABELFAR
?SUB1:MOVAX,1234H
?與數(shù)據(jù)定義語句配合使用:
?名字(新變量名)LABEL類型CBYTE/WORD/DWORDJ
?DATA_BYTELABELBYTE
?DATAWORDDW20HDUPC563HJ
第四章匯編語言
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不能對某寄存器或存儲(chǔ)單元內(nèi)余進(jìn)行移住運(yùn)算。
皿陽備UM理8啊/第四章匯編語言
示例
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
第四章匯編語言
算術(shù)運(yùn)算符
?移位運(yùn)算符不能對寄存器或存儲(chǔ)單元進(jìn)行
移住運(yùn)算
MOVAX,CXSHL5
MOVDX,DATA1SHR3
第四章匯編語言
(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)算符只能對一個(gè)具體數(shù)據(jù)進(jìn)行近轉(zhuǎn)運(yùn)算,不能對一
個(gè)寄存器操作數(shù)或存儲(chǔ)器操作教進(jìn)行邏輯運(yùn)算。
要援學(xué)孝關(guān)摩
皿陽備UM理8啊/第四章匯編語言
示例
MOVAL,NOTOFOH
MOVDX,NOTOFOH
MOVBL,55HOROFOH
ANDBH,55HANDOFOH
XORCX,55HXOR50H
MOVAL,OFH
MOVDX,OFFOFH
MOVBL,0F5H
ANDBH,50H
XORCX,5
第四章匯編語言
(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ù)按無符號數(shù)比較;如果是變量,按偏移
量比較
皿陽備UM理8啊/第四章匯編語言
示例
DATASEGMENT
ORG10H
NUM1=1234
NUM2=1234H
DABYTEDB10HDUP(O)
DA^WORDDW10HDUP(O)
DA]VAR1DWNUM2+DABYTEGTNUMl+DAWOR
DAVAR2DBNUM1LENUM2
DATAENDS
MOVAX,NUM1LTNUM2
MOVBL,NUM1GENUM2
MOVCX,DAWORDGTDABYTE
第四章匯編語言
DAVARlDWOFFFFH
DAVAR2DBOFFH
MOVAX,OFFFFH
MOVBL,0
MOVCX,OFFFFH
可以對兩個(gè)常數(shù)進(jìn)行比較,不能用常數(shù)與偏移量進(jìn)行比較
第四章匯編語言
C4J數(shù)值返回運(yùn)算符
格式:V運(yùn)算符〉V地址表達(dá)式〉
運(yùn)算對象是存儲(chǔ)器操作教,由變量名或標(biāo)號組成地
址表達(dá)式
?SEG:返回變量所在的段值
?OFFSET:返回變量所在偏移
?TYPE:返回變量的類型
?LENGTH:返回?cái)?shù)組變量的元素個(gè)數(shù)
?SIZE:返回?cái)?shù)組變量所占的總字節(jié)教
SIZE=TYPE*LENGTH
第四章匯編語言
示例假設(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
第四章匯編語言
TYPE運(yùn)算符
類型屬性運(yùn)算結(jié)果
變量BYTE1
WORD2
DWORD4
■NEAR-1
FAR-2
用數(shù)字形式表示變量和標(biāo)號的類型屬性
第四章匯編語言
示例
DABYTEDB12H
DA]WORDDW3456H
DA]DWORDDD789AH
MOVAL,TYPEDABYTE
MOVBL,TYPEDATWORD
MOVCL,TYPEDA-DWORD
MOVAL,1
MOVBL,2
MOVCL,4
第四章匯編語言
LENGTH與SIZE運(yùn)算符
?LENGTH運(yùn)算符
返回教組變量的元素個(gè)教
如果變量用DUP定義,Length為外層DUP的值
如果沒有DUP定義,結(jié)果為1
?SIZE運(yùn)算符
教組變量所占的總字節(jié)教
SIZE是LENGTH和TYPE的乘積
第四章匯編語言
示例
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
第四章匯編語言
例:求教組ARRAY的各數(shù)據(jù)項(xiàng)的累加和,從教組最后
一個(gè)數(shù)據(jù)項(xiàng)開始進(jìn)行累加。
ARRAYDW20HDUP(4)
XORAX,AX
MOVSI,OFFSETARRAY
ADDSI,SIZEARRAY-TYPEARRAY
MOVCX,LENGTHARRAY
LOP:ADDAX,[SI]
SUBSI,TYPEARRAY
LOOPLOP
第四章匯編語言
(5)屬性運(yùn)算符
PTR:類型PTR地址表達(dá)式
類型可以是:BYTE9WORD9DWORD或NEARFAR
僅在當(dāng)前語句中有效,是一種臨時(shí)設(shè)置。
DABYTEDB20HDUP(O)
DA]WORDDW10HDUP(O)
MOVWORDPTRDABYTE[10],AX
ADDBYTEPTRDAWORD[DI],BL
INCBYTEPTR[SI]一
SUBWORDPTR[BX],30H
JMPFARPTRSUB1
第四章匯編語言
THIS:THIS類型
?THIS常與等值語句EQU一起用,形成新變量名或
標(biāo)號,使它們具有THIS后所指的類型,而段基值
和偏移量與緊接的變量名或標(biāo)號相同。
?例:
?DATA_BYTEEQUTHISBYTE
?DATA_WORDDW20HDUPCOJ
?JUMP_FAREQUTHISFAR
?JUMPNEAR:XORAX,AX
MNaUM理B啊/第四章匯編語言
(6J分離字節(jié)運(yùn)算符
HIGH表達(dá)式
LOW表達(dá)式
分離運(yùn)算對象的離字節(jié)和低字節(jié)部分
表達(dá)式必須具有常量值,如常教、地址表達(dá)
式的偏移量,不能是存儲(chǔ)器操作教或寄存器
內(nèi)余.
皿陽備UM理8啊/第四章匯編語言
示例
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)
第四章匯編語言
錯(cuò)誤:
MOVCH,HIGHDATA1
i>存儲(chǔ)器
MOVCL,LOWDATA1
MOVDH,HIGHBP
?—寄存器
MOVDL,LOWAX
第四章匯編語言
(7)運(yùn)算符的優(yōu)先級
優(yōu)先級別運(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
第四章匯編語言
六、段結(jié)構(gòu)偽指令
1.段定義偽指令
段名SEGMENT[定住類型][組合類型]['類別名']
■■■
段名ENDS
?定位類型(AlignType):
PAGE(頁):本段從一個(gè)頁的邊界開始,起始地址能被
256整除。
PARA(節(jié)):本段從~個(gè)節(jié)的邊界開始,起始地址能被
16整除。
WORD(字):本段從偶字節(jié)地址開始。
BYTE(字節(jié)):本段從任意地址開始。
第四章匯編語言
?組合類型(CombineType):
表示段與段之間的連接:
None:本段與其它段無連接關(guān)宗,是獨(dú)立的。
PUBLIC:本段與其它同段名同類型的段相連接在一起
,然后為所有這些段指定~個(gè)共同的段基地址,形成一
個(gè)新的近新段。
COMMONt本段與其它同段名同類型的段設(shè)置相同的
段基址,共享相同的存儲(chǔ)區(qū),段長度由同名段中最大的
段確定。(覆蓋段)
皿陽備UM理8啊/第四章匯編語言
組合類型(CombineType):
?STACK:與PUBLIC段相似,但此段為堆找
段,系統(tǒng)自動(dòng)對SS寄存器和SP指針初始化。
?AT表達(dá)式:本段的起始單元可以定位在表
達(dá)式所示的節(jié)邊界上。
?MEMORY:本段定伉在所有其它段的最高
地址,有多個(gè)段,只把第?個(gè)遇到的當(dāng)作
此段。
類別名(Class):用戶給定,在鏈接時(shí)把相同
的段存儲(chǔ)在連續(xù)的存儲(chǔ)區(qū)。
第四章匯編語言
2.段尋址偽指令
ASSUME段寄存器名:段名,段寄存器名:段名,.
DSDATASEGMENT
VARIDB12H
DSDATAENDS
ES^DATASEGMENT
VAR2DB34H
ESDATAENDS
CODESEGMENT
VAR3DB56H
第四章匯編語言
ASSUMECS:CODE?DS:DS_DATA,ES:ES_DATA
START:……
???
INCVARI
INCVAR2
INCVAR3
???
CODEENDS
ENDSTART
?可用關(guān)鍵字NOTHING取請前面的某些設(shè)置。
例:ASSUMEDS:NOTHING;取消對DS的設(shè)置
ASSUMENOTHING;取消全部4個(gè)段R的設(shè)置
皿陽備UM理8啊/第四章匯編語言
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
第四章匯編語言
自動(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
第四章匯編語言
<3>CS的裝人
(1)結(jié)束偽指令
???
CODESEGMENT
ASSUMECS:CODE,
???
START:
???
CODEENDS
ENDSTART
(2)CALL,RET;JMP;IRET
第四章匯編語言
七、過程定義偽指令
過程名PROC[NEAR/FAR]
???
RET
過程名ENDP
?有三個(gè)屬性
??個(gè)過程內(nèi),至少有?條返回指令RET
?調(diào)用過程使用CALL過程名
?段內(nèi)返回與段間返回
第四章匯編語言
入、其它偽指令
?1.ORG,$
ORG表達(dá)式
將表達(dá)式的值賦給優(yōu)置計(jì)數(shù)案
$存放位置計(jì)數(shù)器的當(dāng)前值
第四章匯編語言
?ORG,$舉例
DATASEGMENT
ORG30H;$=30H
DB1DB12H534H;$=32H
ORG$+20H;$=52H
STRINGDB"STRING5
???
DATAENDS
第四章匯編語言
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
第四章匯編語言
入、其它偽指令
?2.EVEN偽指令定位偶地址
?3.INCLUDE偽指令
INCLUDE文件名
INCLUDE文件名
例:INCLUDEFILE.MAC
INCLUDEB:\MASM\ABC.ASM
第四章匯編語言
4.PUBLIC
PUBLIC符號1,符號2,
PUBLICNUM1,STRING,SUB1,LOOP1
DATA1SEGMENT
NUM1EQU1234H
???
STRINGDB'CHARACTERSTRING'
DATA1ENDS
CODEISEGMENT
SUB1PROCFAR
SUB1ENDP
LOOP1:...
CODEIENDS
END
第四章匯編語言
5.EXTRN偽指令
EXTRN符號1:類型,符號2:類型,
畫、
4、EXTRNNUM1:ABS,STRING:BYTE
EXTRNSUB1:FAR,LOOP1:NEAR
C0DE2SEGMENT
MOVAX,NUM1
LEABX,STRING
CALLSUB1
JMPFARPTRL00P1
CODE2ENDS
END
第四章匯編語言
入、其它偽指令
?5.TITLE(標(biāo)題)偽指令,指定?個(gè)標(biāo)題
格式:TITLE文本
?字符不超過80個(gè)
例:
TITLEEXAMPLEPROGRAM
第四章匯編語言
九、宏指令
例:
MULTAX10MACRO
PUSHBX
SALAX,1
MOVBX,AX
SALAX,1
SALAX,1
ADDAX,BX
POPBX
ENDM
第四章匯編語言
九、宏指令
1.宏定義
宏名MACRO[形參1,形參2,…]
ENDM
EXCHANGEMACROMEM1,MEM2,REG
MOVREG,MEM1
XCHGREG,MEM2
MOVMEM1,REG
ENDM
皿陽備UM理8啊/第四章匯編語言
2.宏調(diào)用宏名[賣參1,實(shí)參2,…]
EXCHANGEDABY1?DABY2,AL
3.宏展開
皿陽備UM理B啊/第四章匯編語言
;宏定義
MULTAX10MACRO___
PUSHBX
SALAX,1
MOVBX,AX
SALAX,1
SALAX,1
ADDAX,BX
POPBX
ENDM
EXCHANGEMACROMEM1,MEM2,REG
MOVREG,MEM1
XCHGREG,MEM2
MOVMEM1,REG
ENDM
第四章匯編語言
DATASEGMENT
DAWOlDW—1234H
DA502DW5678H
DATAENDS
;設(shè)置堆棧段
STACK1SEGMENTPARASTACK
DW20HDUP(?)
STACK1ENDS
;設(shè)置代碼段
COSEGSEGMENT
ASSUMECS:COSEG,DS:DATA,SS:STACK1
START:MOVAX,DATA
MOVDS,AX
???
MULTAX10;宏指令語句
+PUSHBX
+SALAXJ
第四章匯編語言
+MOVBX,AX
+SALAX,1
+SALAX,1
+ADDAX,BX
+POPBX
EXCHANGEDAW01,DAW02,CX:宏指令語句
+MOVCX?DAW01
+XCHGCX,DAW02
+MOVDAWOf,CX
COSEGENDS
ENDSTART
第四章匯編語言
4.宏操作符
?連接操作符&
定義:SHIFTVARMACRORM,DIRECT,COUNT
MOVCL,COUNT
S&DIRECTRM,CL
ENDM
調(diào)用:SHIFTVARAX,HL,2
SHLAX,CL
SHIFTVARAX,HR,2
SHRAX,CL
第四章匯編語言
表達(dá)式操作符%
格式:%表達(dá)灰;獲取表達(dá)式的值(出現(xiàn)在宏調(diào)用中)
SHIFOMACROCNT
MOVCL,CNT
ENDM
SHIF1MACROREG,DIRECT,
NUM
COUNT=NUM;宏展開
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
第四章匯編語言
?文本操作符V>
EXCHANGE<BYTEPTRDA_WORD1>,<BYTEPTRDA_W0RD2>,AL
宏展開
MOVAL,BYTEPTRDAWORD1
XCHGAL,BYTEPTRDA]WORD2
MOVBYTEPTRWORD1-AL
?字符操作符!
格式:!字符
宏定義:PROMPTMACRONUM,TEXT
PROMP&NUMDB'&TEXT&'
ENDM
宏調(diào)用:PROMPT23,<Expression!>255>
宏展開:PROMPT23DB'Expression>2559
?宏注解符;;
第四章匯編語言
5.LOCAL偽指令
LOCALv符號表>
在匯編過程中,宏定義中的內(nèi)態(tài)會(huì)在每一
次宏調(diào)用處展開。因此當(dāng)多次調(diào)用?個(gè)宏時(shí),
宏定義中的標(biāo)號會(huì)造成標(biāo)號重復(fù)定義。
在宏定義中使用LOCAL偽指令可以使標(biāo)號
被局部化,從而避免重復(fù)定義。
LOCAL偽指令只能用在宏定義中,并且它
必須是宏定義中緊跟在MACRO偽指令之后的
第?個(gè)語句。
第四章匯編語言
用連續(xù)相加的辦法實(shí)現(xiàn)無符號數(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年公園裝飾花架項(xiàng)目投資可行性研究分析報(bào)告
- 中國曲柄銷項(xiàng)目投資可行性研究報(bào)告
- 中國切紙鼓輪市場運(yùn)行動(dòng)態(tài)及行業(yè)投資潛力預(yù)測報(bào)告
- 花岡巖石材行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報(bào)告
- 2019-2025年中國轉(zhuǎn)移印花行業(yè)市場深度分析及發(fā)展前景預(yù)測報(bào)告
- 2025年公路安全設(shè)施制作行業(yè)深度研究分析報(bào)告
- 中國麻醉藥行業(yè)市場發(fā)展監(jiān)測及投資戰(zhàn)略咨詢報(bào)告
- 2025年獸用制品項(xiàng)目投資可行性研究分析報(bào)告
- 年產(chǎn)5000件皮帶輪建設(shè)可行性研究報(bào)告申請備案立項(xiàng)
- 2025-2030年中國交通運(yùn)輸備用蓬布行業(yè)深度研究分析報(bào)告
- 2024年吉林省中考語文真題
- DBJ50-T-271-2017 城市軌道交通結(jié)構(gòu)檢測監(jiān)測技術(shù)標(biāo)準(zhǔn)
- (高清版)TDT 1090-2023 國土空間歷史文化遺產(chǎn)保護(hù)規(guī)劃編制指南
- 全新養(yǎng)豬代養(yǎng)協(xié)議范本
- 冀教版(冀人版)二年級下冊小學(xué)美術(shù)全冊教案
- DZ∕T 0207-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 硅質(zhì)原料類(正式版)
- 數(shù)字貿(mào)易學(xué) 課件 第1-3章 導(dǎo)論、數(shù)字貿(mào)易的產(chǎn)生與發(fā)展;消費(fèi)互聯(lián)網(wǎng)、產(chǎn)業(yè)互聯(lián)網(wǎng)與工業(yè)互聯(lián)網(wǎng)
- 《飛向太空的航程》基礎(chǔ)字詞梳理
- 追覓入職測評題庫
- 寧德時(shí)代入職測評試題答案
- 干粉滅火器的使用方法課件
評論
0/150
提交評論