计算机原理与汇编汇编语言基础_第1页
计算机原理与汇编汇编语言基础_第2页
计算机原理与汇编汇编语言基础_第3页
计算机原理与汇编汇编语言基础_第4页
计算机原理与汇编汇编语言基础_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言概述

~、概述

1.高级语言与汇编语言比较

高级语言:语句汇编语言:指令

变量说明/史义分配寄存器

inty,a=25,b=3,c=76;分配存储单元

给变量赋值数据传遹

y=2(a+b)-c

2.汇编程序结构

数据段

堆找段

代码段

第四章汇编语言

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

;设置数据段

DATASEGMENT

ADB25;数据A

BDB3;数据B

CDB76;数据C

YDB?■;存放结果

DATAENDS

;设置堆栈段

STACK1SEGMENTPARASTACK

DW20HDUP(O)

STACK1ENDS

第四章汇编语言

示例:

;设置代码段

COSEGSEGMENT

ASSUMECS:COSEG,DS:DATA,SS:STACK1

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

MOVDS,AX

MOVAL,A;取数据A

ADDAL,B;计算(A+B)

SALAL,1;计算2(A+B)

SUBAL,C;计算2(A+B)-C

MOVY,AL;存结果

;结束用户程序,返回操作系统

MOVAH,4CH

INT21H

COSEGENDS

ENDSTART

第四章汇编语言

汇编语言与机器语言

•汇编语言:

•是汇编格式指令,伪指令的集合及其表示,使用这些指

令的一组规则。

・机器语言:

•用二进制编巧的机器指令的集合及一组使用规则,它是

CPU能直接识别的唯一语言。

•MOVDS,AX汇编语言

•8ED8机器语言(目标代延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

第四章汇编语言

汇编语言与目标代吗的对应

数据A址DO}SALAL,1

数据B增EO^

数据C方

数据D向

>SUBAL,C

Y

MOVAX,DATA

aMOVY,AL

0?

MOVDS,DXB4LMOVAH,4CH

4C

CDLINT21H

MOVAL,A

ADDAL,B

第四章汇编语言

汇编语言特点

口与机器语言相关

效率高

□编写源程序繁琐

□调试困睢

汇编语言的主要应用场合:

C1J程序执行占用较短的时间,或者占用较小存储余量的场合。

(2)程序与计算机硬件密切相关,程序直接控制硬件的场合。

C3J需提高大型软件性能的场合。

(4)没有合适的高级语言的场合。

第四章汇编语言

二、汇编语言语句种类

语句种类

指令语句:又叫可执行语句,在汇编时产生一个

目林代码,对应机器的一种操作。

伪指令语句:又叫命令语句。用于指示汇编程序

如何汇编源程序,没有目标代码与之对应。

宏指令语句:由用户自定义的指令。r指令的疔

展)

皿阳备UM理8啊/第四章汇编语言

二、汇编语言语句格式

・格式:

名字操作符操作教;注希

[标号:]助记符[操作教L操作教]心注释]

[名字]走义符[参数,…,参教][;注释]

•命名规则:

可以用?,@」数室和美文字符。

名字的第一个字符不能是教字。

名字的长度不受F艮制,但只有箭'31个字符有效。

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

第四章汇编语言

指令语句:[标号:]肋记符[操作教L操作教]][;注斡]

1、标号:标号是机器指令语句存放地址的符号表示,

代表该指令目标代码的第一个字节地址,后面必须紧

跟冒号“:”O

2.指令助记符:指令肋记符为语句的核心成分,表

示了该语句的操作类型。“MOV”

3.操作教:操作教表示指令助记符的操作对象。

4,注羚:注绛均以分号开始,它可占~行或多行,

~般放^在~条语句的后面。

第四章汇编语言

伪指令语句:[名狗定义符[参数,…,参数][;注译]

L名字(符号名):伪指令语句的一个可选项,空格

表示结束,不得使用冒号。

2、定义符(伪指令符):指定汇编程序要完成的具体

操作,如数据定义伪指令DB、DW、DD,段定义伪指

令SEGMENT,假定伪指令ASSUME等。

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

字符串、变量、表达式等,其个数由具体的伪指令决

定,各个操作数之间必须以“退号”分隔。

4.注样:伪指令的注绛必须以'”开始,其作用同

指令语句中的注绛部分。

第四章汇编语言

三、符号定义语句

1.等值语句

•格式:符号EQU表达式

表达式:常数或数值表达式

地址表达式

变量或标号

CONSTEQU10

ADRIEQUDS:[BP+14H]

ADR2EQUCONST+10

COUNEQUVAR

同一符号不能用EQU重新定义。

汇编时,作为替代符号用,不产生目标代码,不占

用存储单元。

第四章汇编语言

・一>符号定义语句

•2.等号语句

•格式:符号=表达式

•C0NT=5

•NUM=10H

•NUM=NUM+20H

•表达式形式同上,但可多次重新定义同〜

行亏。

第四章汇编语言

四、数据定义语句

格式:变量名DB/DW/DD表达式1,表达式2,…

保留存储空间,并可以完成数据的初始化。

例:

DATASEGMENT

DA1DB9AH

DA2DW5678H

DA3DD12345678H

DATAENDS

变量的属性:段属性SEG

偏移属性。FFSET

类型属性TYPE

第四章汇编语言

四、数据定义语句

•格式:变量名DB/DW/DD表达式J,表达式2,…

表达式:

⑴教值

⑵字符/字符串

(3)?表达式:分配相应数量的存储单元,但不初始化。

(4)带DUP的表达式:使用重复数据操作符DUP,能方便

地定义连续的存储单元。

格式:变量名DB/DW/DD表达式J,DUP(表达式2)

次教内<

操作符DUP可以嵌套使用:

DAB3DB10HDUP(4DUP(3),8)

第四章汇编语言

DABYTElDB50H数值表达式

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

DA^WORDlDW0A34H/

DA]WORD2DW1234H,5678H,9ABCH

DAZDWORDDD12345678H,9ABCDEFH

字符串表达式、

STRING1DB'STRING'

STRING!DW6ST\RT,NG,

STRINGSDD'ST',RI','NG'

]?表达式'

DABYTE3DB?,?

DAWORD3DW?,?

第四章汇编语言

STRING!STRING3

STRING1

第四章汇编语言

带DUP表达式

DABlDB10HDUP(?7一

DA]B2DB20HDUPCABCD,)

DA]WIDW10DUP(4)

DAW2DW10DUP(-IJ)

内容

格式:变量名DB/DW/DD表达式1,DUP(表达式2)

操作符DUP可以嵌套使用

DB10HDUP(4DUP(3),8);3,3,3,3,8重复10H次

第四章汇编语言

数据类型

字节BYTE1DB

字WORD2DW

双字DWORD4DD

四字QWORD8DQ

十字节TBYTE10DT

第四章汇编语言

五、汇编语言数据与运算符

1.常教数值常教:二、八、十、十六进制B,O,D,H

字符串常教

2.变量

用数据定义语句定义并预置初值后,变量代表存储单元的教

据,并作为该单元的符号地址。

变量引用:

在指令语句的操作数字段中,引用的变量名作为地址表

达式的组成部分之一。

地址表达式的值:存放操作数的存储单元偏移量。

地址表达式的类型:同变量名的类型。

(2)在用DW或DD的数据定义语句中,若操作教字段引用

了变量名,则在分配的存储单元中,预置被引用的变量名的

地址部分偏移量fDW;DD,前两个字节)

——段基值CDD,后两个字节)

皿阳备UM理8啊/第四章汇编语言

3.标号:一条指令的符号地址。

•段属性

•偏移属性

•类型属性NEAR/FAR

♦类型属性设置:

•C1J隐、合方式:NEXT:MOVAX,3000

•(2)用LABEL伪指令设置类型属性:

•标号伪指令LABEL格式:

•名字LABEL类型

•与指令语句配合使用:

•名字(新标号)LABEL类型CNEAR/FARJ

•SUB1_FARLABELFAR

•SUB1:MOVAX,1234H

•与数据定义语句配合使用:

•名字(新变量名)LABEL类型CBYTE/WORD/DWORDJ

•DATA_BYTELABELBYTE

•DATAWORDDW20HDUPC563HJ

第四章汇编语言

4.运算符C1J算术运算符

运算符运算格式运算功能

++表达式正教r单项运算符)

-表达式j负教(单项运算符)

+表达式1+表达式2加法

表达式1-表达式2戒法

*表达式1*表达式2乘法

/表达式1/表达式2除法(取商)

MOD表达式1MOD表达式2模除(取余数)

SHR表达式1SHR次教右移

SHL表达式1SHL次教左移

只有臧法运算可以用同一段内的两个变量相戒

SHR、SHL不能对某寄存器或存储单元内余进行移住运算。

皿阳备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

第四章汇编语言

算术运算符

•移位运算符不能对寄存器或存储单元进行

移住运算

MOVAX,CXSHL5

MOVDX,DATA1SHR3

第四章汇编语言

(2)近春运算符

运算符运算格式___________运算功能

NOTNOT表达式之梅非

AND表达式1AND表达式2谡子耳与

OR表达式1OR表达式2遂子耳或

XOR表达式1XOR表达式2谡握异或

近转运算符只能对一个具体数据进行近转运算,不能对一

个寄存器操作数或存储器操作教进行逻辑运算。

要援学孝关摩

皿阳备UM理8啊/第四章汇编语言

示例

MOVAL,NOTOFOH

MOVDX,NOTOFOH

MOVBL,55HOROFOH

ANDBH,55HANDOFOH

XORCX,55HXOR50H

MOVAL,OFH

MOVDX,OFFOFH

MOVBL,0F5H

ANDBH,50H

XORCX,5

第四章汇编语言

(3)关余运算符

运算符运算格式运算功能

EQ表达式1EQ表达式2两个表达式相等为真

NE表达式1NE表达式2两个表达式不相等为真

LT表达式1LT表达式2表达式1<表达式2为工

LE表达式1LE表达式2表达式1<=表达式2为真

GT表达式1GT表达式2表达式1>表达式2为真

GE表达式1GE表达式2表达式1>=表达式2为真

全1为真,会。为假

比较时,若为常数按无符号数比较;如果是变量,按偏移

量比较

皿阳备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

可以对两个常数进行比较,不能用常数与偏移量进行比较

第四章汇编语言

C4J数值返回运算符

格式:V运算符〉V地址表达式〉

运算对象是存储器操作教,由变量名或标号组成地

址表达式

•SEG:返回变量所在的段值

•OFFSET:返回变量所在偏移

•TYPE:返回变量的类型

•LENGTH:返回数组变量的元素个数

•SIZE:返回数组变量所占的总字节教

SIZE=TYPE*LENGTH

第四章汇编语言

示例假设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运算符

类型属性运算结果

变量BYTE1

WORD2

DWORD4

■NEAR-1

FAR-2

用数字形式表示变量和标号的类型属性

第四章汇编语言

示例

DABYTEDB12H

DA]WORDDW3456H

DA]DWORDDD789AH

MOVAL,TYPEDABYTE

MOVBL,TYPEDATWORD

MOVCL,TYPEDA-DWORD

MOVAL,1

MOVBL,2

MOVCL,4

第四章汇编语言

LENGTH与SIZE运算符

•LENGTH运算符

返回教组变量的元素个教

如果变量用DUP定义,Length为外层DUP的值

如果没有DUP定义,结果为1

・SIZE运算符

教组变量所占的总字节教

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的各数据项的累加和,从教组最后

一个数据项开始进行累加。

ARRAYDW20HDUP(4)

XORAX,AX

MOVSI,OFFSETARRAY

ADDSI,SIZEARRAY-TYPEARRAY

MOVCX,LENGTHARRAY

LOP:ADDAX,[SI]

SUBSI,TYPEARRAY

LOOPLOP

第四章汇编语言

(5)属性运算符

PTR:类型PTR地址表达式

类型可以是:BYTE9WORD9DWORD或NEARFAR

仅在当前语句中有效,是一种临时设置。

DABYTEDB20HDUP(O)

DA]WORDDW10HDUP(O)

MOVWORDPTRDABYTE[10],AX

ADDBYTEPTRDAWORD[DI],BL

INCBYTEPTR[SI]一

SUBWORDPTR[BX],30H

JMPFARPTRSUB1

第四章汇编语言

THIS:THIS类型

•THIS常与等值语句EQU一起用,形成新变量名或

标号,使它们具有THIS后所指的类型,而段基值

和偏移量与紧接的变量名或标号相同。

•例:

•DATA_BYTEEQUTHISBYTE

•DATA_WORDDW20HDUPCOJ

•JUMP_FAREQUTHISFAR

•JUMPNEAR:XORAX,AX

MNaUM理B啊/第四章汇编语言

(6J分离字节运算符

HIGH表达式

LOW表达式

分离运算对象的离字节和低字节部分

表达式必须具有常量值,如常教、地址表达

式的偏移量,不能是存储器操作教或寄存器

内余.

皿阳备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)

第四章汇编语言

错误:

MOVCH,HIGHDATA1

i>存储器

MOVCL,LOWDATA1

MOVDH,HIGHBP

।—寄存器

MOVDL,LOWAX

第四章汇编语言

(7)运算符的优先级

优先级别运算符

(最高)1LENGTH,SIZE

2PTR,OFFSET,SEG,TYPE?THIS

3HIGH,L0W

4+,-(单项运算符)

5*,/,MOD,SHR,SHL

6+,~

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

8NOT

9AND

(最低)10OR,XOR

第四章汇编语言

六、段结构伪指令

1.段定义伪指令

段名SEGMENT[定住类型][组合类型]['类别名']

■■■

段名ENDS

•定位类型(AlignType):

PAGE(页):本段从一个页的边界开始,起始地址能被

256整除。

PARA(节):本段从~个节的边界开始,起始地址能被

16整除。

WORD(字):本段从偶字节地址开始。

BYTE(字节):本段从任意地址开始。

第四章汇编语言

•组合类型(CombineType):

表示段与段之间的连接:

None:本段与其它段无连接关宗,是独立的。

PUBLIC:本段与其它同段名同类型的段相连接在一起

,然后为所有这些段指定~个共同的段基地址,形成一

个新的近新段。

COMMONt本段与其它同段名同类型的段设置相同的

段基址,共享相同的存储区,段长度由同名段中最大的

段确定。(覆盖段)

皿阳备UM理8啊/第四章汇编语言

组合类型(CombineType):

•STACK:与PUBLIC段相似,但此段为堆找

段,系统自动对SS寄存器和SP指针初始化。

•AT表达式:本段的起始单元可以定位在表

达式所示的节边界上。

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

地址,有多个段,只把第〜个遇到的当作

此段。

类别名(Class):用户给定,在链接时把相同

的段存储在连续的存储区。

第四章汇编语言

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

・可用关键字NOTHING取请前面的某些设置。

例:ASSUMEDS:NOTHING;取消对DS的设置

ASSUMENOTHING;取消全部4个段R的设置

皿阳备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;设鳖DS

MOVDS,AX~

MOVAX,DATAJES;^SES

MOVESfAX

•••

CODEENDS

第四章汇编语言

自动

<2>SS的装人装入

(1)STACK1SEGMENTPARASTACK

DW20HDUP(?)r执行程序'

STACK1ENDS装入

,J

(2)STACK2SEGMENT

DW30HDUP(?)

TOPLABELWORD

STACK2ENDS

CODESEGMENT

MOVAX,STACK2;设置SS

MOVSS,AX

MOVSP,OFFSETTOP;修改SP

第四章汇编语言

<3>CS的装人

(1)结束伪指令

•••

CODESEGMENT

ASSUMECS:CODE,

•••

START:

•••

CODEENDS

ENDSTART

(2)CALL,RET;JMP;IRET

第四章汇编语言

七、过程定义伪指令

过程名PROC[NEAR/FAR]

•••

RET

过程名ENDP

•有三个属性

•〜个过程内,至少有〜条返回指令RET

•调用过程使用CALL过程名

•段内返回与段间返回

第四章汇编语言

入、其它伪指令

•1.ORG,$

ORG表达式

将表达式的值赋给优置计数案

$存放位置计数器的当前值

第四章汇编语言

•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(标题)伪指令,指定〜个标题

格式:TITLE文本

•字符不超过80个

例:

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.宏调用宏名[卖参1,实参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

;设置堆栈段

STACK1SEGMENTPARASTACK

DW20HDUP(?)

STACK1ENDS

;设置代码段

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

调用:SHIFTVARAX,HL,2

SHLAX,CL

SHIFTVARAX,HR,2

SHRAX,CL

第四章汇编语言

表达式操作符%

格式:%表达灰;获取表达式的值(出现在宏调用中)

SHIFOMACROCNT

MOVCL,CNT

ENDM

SHIF1MACROREG,DIRECT,

NUM

COUNT=NUM;宏展开

SHIFO%COUNTSHIF1AX,HL,2

S&DIRECTREG,CL+MOVCL,2

ENDM+SHLAX,CL

宏调用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

宏调用:PROMPT23,<Expression!>255>

宏展开:PROMPT23DB'Expression>2559

•宏注解符;;

第四章汇编语言

5.LOCAL伪指令

LOCALv符号表>

在汇编过程中,宏定义中的内态会在每一

次宏调用处展开。因此当多次调用〜个宏时,

宏定义中的标号会造成标号重复定义。

在宏定义中使用LOCAL伪指令可以使标号

被局部化,从而避免重复定义。

LOCAL伪指令只能用在宏定义中,并且它

必须是宏定义中紧跟在MACRO伪指令之后的

第〜个语句。

第四章汇编语言

用连续相加的办法实现无符号数乘法运算

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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论