汇编语言程序设计的基本方法P52Word文档格式.docx

上传人:b****5 文档编号:19676923 上传时间:2023-01-08 格式:DOCX 页数:80 大小:486.23KB
下载 相关 举报
汇编语言程序设计的基本方法P52Word文档格式.docx_第1页
第1页 / 共80页
汇编语言程序设计的基本方法P52Word文档格式.docx_第2页
第2页 / 共80页
汇编语言程序设计的基本方法P52Word文档格式.docx_第3页
第3页 / 共80页
汇编语言程序设计的基本方法P52Word文档格式.docx_第4页
第4页 / 共80页
汇编语言程序设计的基本方法P52Word文档格式.docx_第5页
第5页 / 共80页
点击查看更多>>
下载资源
资源描述

汇编语言程序设计的基本方法P52Word文档格式.docx

《汇编语言程序设计的基本方法P52Word文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计的基本方法P52Word文档格式.docx(80页珍藏版)》请在冰豆网上搜索。

汇编语言程序设计的基本方法P52Word文档格式.docx

LT(小于),GT(大于),

LE(小于等于),GE(大于等于);

如果关系式成立则为全1,否则为全0。

例:

MOVAX,BUF+2

ADDAL,VALAND0FH

JMPAGAIN+3

MOVBL,VBLEVA

注意:

此处四条不一定全讲书上没有具体解释

4.1.4标号、变量及伪指令

1.标号(后加冒号)

标号是由标识符表示的指令(CPU指令)的名称

用以指示对应的指令的位置。

标号的三个属性:

段地址(SEG):

标号所在段的段地址。

偏移地址(OFFSET):

标号所在段内的偏移地址。

类型:

NEAR(-1)类型表示在段内使用。

FAR(-2)类型表示在段间使用。

START:

PUSHDS

段寄存器DS的内容压入堆栈

2.变量(不加冒号)

1)变量定义(格式)

变量名DB表达式;

定义字节变量

变量名DW表达式;

定义字变量

变量名DD表达式;

定义双字变量

变量名DO表达式;

定义长字变量

变量名DT表达式;

定义十字节变量

例4.1.4P57

DATA1DB20HDB、DW、DD,DQ、DT

DATA2DW0204H,1000H定义变量的类型分别为:

DATA3DB(-1*3),(15/3)1、2、4、8、10

DATA4DD12345HDB、DW、DD定义变量的类型

DATA5DB‘0123’通常称为BYTE、WORD、DWORD

DATA6DW‘AB’,‘C’,‘D’

DATA7DB?

DATA8DD?

DATA9DB5DUP(00)

DATA10DW3DUP(?

2)变量的属性

变量所在段的段地址。

变量所在段内的偏移地址。

类型(TYPE):

每个变量所占的字节数。

长度(LENGTH):

第一个DUP前的系数,表示变量重复次数;

否则为1。

大小(SIZE):

变量所占用的字节数,SIZE=TYPE×

LENGTH

表4.2部分变量的属性P58

变量名

段地址

偏移地址

类型

长度

大小

DATA1

0100H

0000H

1

DATA2

0001H

2

DATA3

0005H

DATA4

0007H

4

DATA5

000BH

DATA6

000FH

DATA10

001FH

3

6

4.1.4属性操作符及表达式

1.获取属性的操作符P58

操作符

表达式

表达式意义

SEG

SEG变量名或标号

取出变量或标号所在段的段地址

OFFSET

OFFSET变量名或标号

取出变量或标号在段内的偏移地址

TYPE

TYPE变量名或标号

取出变量或标号的类型

LENGTH变量名

取出变量的长度

SIZE

SIZE变量名

取出变量的大小

P59

SEGDATA1;

结果为0100H

OFFSETDATA1;

结果为0000H

LENGTHDATA6;

结果为1

TYPEDATA6;

结果为2

SIZEDATA9;

结果为5

MOVAX,SIZEDATA9;

将DATA9的大小送AXMOVAX,5

MOVAX,SEGDATA1;

将DATA1的段地址送AXMOVAX,0100H

MOVBL,TYPEDATA6;

将DATA9的类型送BLMOVBL,2

DAT1DB02H

DAT2DW0F00H

DAT3DW5DUP(?

DAT4DBLENGTHDAT3;

在DAT4处存放的是DAT3的长度(5)

DAT5DWDAT3;

在DAT5处存放的是DAT3的偏移地址

DAT6DDDAT3;

在DAT6处存放的是DAT3的段地址和偏移地址

2.PTR操作:

重新定义变量或标号的类型

格式:

类型PTR表达式

式中的类型:

BYTE,WORD,DWORD(变量),DEAR,FAR(标号)

MOVDAT3,AL;

由于两者的类型不一致为非法指令

MOVBYTEPTRDAT3,AL;

PTR操作使两者的类型不一致

DAT3的类型本身没有被改变

4.28086/8088指令系统P59

指令分类:

数据传送指令

⑵算术运算指令

⑶逻辑运算指令

⑷移位指令

⑸标志处理指令和CPU控制指令

⑹转移和循环控制指令

⑺调用和返回指令

⑻字符串操作指令

⑼输入输出指令

表4.4指令中将会出现的缩写和符号P60

缩写和符号

意义

OPR

操作数

EA

有效地址

SRC

源操作数

DST

目的操作数

DATA

立即数

REG

寄存器

←→

互相交换

RSRC

源寄存器

替代

RDST

目的寄存器

(X)

X的内容

CNT

计数

逻辑与

DISP

位移量

逻辑或

D8

8位位移量

逻辑异或

D16

16位位移量

X的反码

ADDR

地址

4.2.1数据传送指令

表4.5数据传送类指令的格式与功能P61

助记符格式

功能说明

MOVDST,SRC

(DST)←→(SRC)

LEAREG,SRC

(REG)←(SRC)的有效地址

LDSREG,SRC

(REG)←(SRC),(DS)←(SRC+2)

LESREG,SRC

(REG)←(SRC),(ES)←(SRC+2)

LAHF

(AH)←(FLAG)低8位

SAHF

(FLAG)低8位←(AH)

XCHGOPR1,OPR2

(OPR1)←→(OPR2)

XLAT

(AL)←((BX)+AL))

PUSHSRC

(SP)←(SP)-2,((SP)+1:

(SP))←(SRC)

POPDST

(DST)←((SP)+1:

(SP)),(SP)←(SP)+2

PUSHF

(SP))←(FLAG)

POPF

(FLAG)←((SP)+1:

1.通用传送指令:

MOVDST,SRC

SRC源操作数:

通用寄存器,段寄存器,内存单元和立即数

DST目的操作数:

通用寄存器,段寄存器,内存单元,但不能为立即数和CSIP

当目的操作数为段寄存器时,源操作数不能为立即数;

当源操作数不为立即数时,两个操作数中必须有一个是寄存器。

例①:

MOVAX,BX;

(AX)←(BX),传送一个字

MOVAL,DL;

(AL)←(DL),传送一个字节

MOCAX,02;

(AX)←0002H,传送一个字

MOVSI,[BX];

(SI)←((BX)),传送一个字

MOVAL,4[DI];

(AL)←((DI)+4),传送一个字节

MOVAX,[BX+2];

(AX)←((BX)+2),传送一个字

MOV[BX][DI],DX;

((BX)+(DI))←(DX)

MOVAL,4[DI]指令的操作示意图如图4.2(a)P62

 

例②:

假设变量定义如下:

DATA1DW20H,30H

DATA2DB50H,60H,70H

DATA3DW10HDUP(?

传送指令可以有:

MOVAX,DATA1

MOVDATA3,BX

MOVAL,DATA2[DI]

MOVDATA3[SI],DX

MOVCX,LENGTHDATA3

MOVBX,SIZEDATA3

MOVSI,OFFSETDATA2

两个操作数的类型必须确定,否则不合法(错误)

MOVDATA3[SI],02;

MOV2[SI],AL;

MOV4[DI],02;

错误,类型不确定

MOVBYTEPTR4[DI],02;

例③:

DATA1DW05H,15H,20H

DATA2DB0FH,10H,0AH

DATA3DB5DUP(?

MOVAX,BL;

错误

MOVAL,DATA1;

MOVBX,DATA3[SI];

例④:

段前缀的使用

MOVAX,ES:

[SI]

●数据传送的正常通道(图4.3P64)

注意:

图中共有n个传送箭头,能举例说明之!

⑦JMPDWORD[DI]

CALLDWORD[SI]

2.取有效地址指令:

LEAREG,SRC

是将源操作数SRC的有效地址EA送入寄存器REG。

REG不能为段寄存器,SRC不能为立即数和寄存器。

设:

(DI)=0500H,(DS)=0200H,(0200H:

0510H)=00FFH

MOVAX,10H[DI];

执行后(AX)=00FFH

LEAAX,10H[DI];

执行后(AX)=0510H

LEADI,DATA1

LEABX,AGAIN

3.取地址指令:

LDSREG,SRC

LESREG,SRC

功能:

是将源操作数SRC所对应的内存单元中的32位数据送DS/ES和REG。

TABLEDB10H,20H,30H,40H,50H

POINT1DD02001000H

POINT2DDTABLE

|

LDSDI,POINT1;

(DS)=0200H,(DI)=1000H

LESSI,POINT2;

(ES)=SEGTABLE,(SI)=OFFSETTABLE

4.标志传送指令

LAHF;

SAHF;

5.数据交换指令XCHGOPR1,OPR2

注意:

两个操作数中必须有一个是寄存器,不允许同时为段寄存器

XCHGAX,BX

XCHGAX,[2000H]

6.字节转换指令(查表指令)

XLAT;

TABLEDB05,08,06

DB04,09,01

DB02,03,00,07

MOVAX,SEGTABLE

MOVDS,AX

MOVBX,OFFSETTABLE

MOVAL,05

XLAT

思考题:

=X.X二位BCD数或X.XXX三位BCD数如何解决?

7.堆栈操作指令

堆栈:

以后进先出(LIFO)的规则存取信息的一种存储机构(一部分存储器),

均为字操作,向下生成。

压栈指令:

PUSHSRC;

SP)←(SP)-2,((SP)+1:

出栈指令:

POPDST;

向下生成

MOVSP,0100H

PUSHAX

PUSHBX

POPAX

POPBA

4.2.2算术运算指令

1.加法与减法指令

表4.8加减法指令的助记符与功能P69

ADDDST,SRC

(DST)←(DST)+(SRC)

ADCDST,SRC

(DST)←(DST)+(SRC)+C

SUBDST,SRC

(DST)←(DST)—(SRC)+C

SBBDST,SRC

(DST)←(DST)—(SRC)—C

NEGDST

(DST)←0—(DST)“求补或求负”

对二进制代码运算,注意对标志位的影响。

ADDAL,BLADCAX,0

ADDCX,08HSBBXC,DATA1

ADDAX,[SI]NEGAX

ADDAX,[BX][DI]

SUBAL,CL

SUB[BX],DX

1)ADDAX,[SI]指令执行过程P70

2)一个多位数加法程序

两数A、B已由数据定义语句置如内存,

A、B为四字节长度的数据

计算:

C=A+B,不考虑进位,和也为

四字节长度的数据。

程序如下:

MOVAX,SEGADR1

MOVDS,AX

LEADI,ADR1

MOVAX,4[DI]

ADDAX,[DI]

MOVADR2,AX

MOVAX,6[DI]

ADCAX,2[DI]

MOVAFR2+2,AX

实际:

00127654H+00049821H=00170E75H

考虑:

数据带不带符号?

2.比较指令P73

CMPDST,SRC;

(DST)-(SRC)影响标志(不生成结果)

CMPAL,BL

CMPAX,06H

3.增量和减量指令(表4.9P74)

INCDST;

(DST)←(DST)+1

DECDST;

(DST)←(DST)-1

不影响CF标志(其他要影响的!

);

全1增量为全0;

全0减量为全1。

INCWORDPTR4[BX]

DECCX

4.乘法和除法指令P74

表4.10乘法除法指令助记符与功能P74

IMULSRC

(带符号数乘法)

字节运算:

(AX)←(AL)×

(SRC)

字运算:

(DX:

AX)←(AX)×

MULSRC

(不带符号数乘法)

同IMUL,不带符号

IDIVSRC

(带符号数除法)

(AL)←(AX)/(SRC)的商

(AH)←(AX)/(SRC)的余数

(AX)←(DX:

AX)/(SRC)的商

(DX)←(DX:

AX)/(SRC)的余数

DIVSRC

(不带符号数除法)

同IDIV,不带符号

①无符号数相乘后结果的高位字节(或字)为全0,或符号数相乘结果的高位字节(或字)仅为低位字节(或字)的符号扩展,则CF=OF=0,否则CF=OF=1。

其他标志位不影响。

②除法运算若发生除数为0或商溢出,则其结果无意义,并引起中断。

DAT1为字变量P75

MULDAT1;

(DAT1)

IMULCL;

(CL)带符号数

MULBYTEPTR[BX];

((BX))

P75

DTA1DW8004H;

此处代码可有不同的解释

1)MOVAX,05H;

(0005H)×

8004H=00028014H

MULDAT1;

结果在DX:

AX中

︱;

(DX)=0002H,(AX)=8014H

2)MOVAX,05H;

(05H)×

04H=0014H

MULBYTEPTRDAT1;

结果在AX中(AX)=0014H

3)MOVAX,05H;

IMULBYTEPTRDAT1;

结果在AX中,也可看作两个无

(两个很小的正数)

4)MOVAX,05H;

8004H=FFFD8014H

IMULWORDPTRDAT1;

正数负数负数

4)解为:

8004H=1000000000000100B为负数(补码)

0111111111111011B求反

0111111111111100B加1(求得绝对值)

7FFCH用十六进制表示

×

0005H与正5相乘

00027FECH商的绝对值

00000000000000100111111111101100B商的绝对值(二进制数)11111111111111011000000000010011B商的绝对值求反

11111111111111011000000000010100B求反加1得补码

FFFD8014H十六进制表示

结果:

(DX)=FFFDH;

(AX)=8014H

5.符号扩展指令P76

表4.11符号扩展指令助记符与功能P76

CBW

将AL中的符号扩展到AH中

将一个字节长度的带符号数扩展为一个字长度,值不变

CWD

将AX中的符号扩展到DX中

将一个字长度的带符号数扩展为双字长度,值不变

符号扩展意义:

一个带符号数长度发生了变化,但值没变。

寻址方式是隐含的,一定是AL或AX。

思考:

将一个带符号数变短:

高字节是低位的符号扩展,则高字节可舍去!

6.BCD数调整指令

表4.12BCD数调整指令助记符与功能P76

AAA

加法分离BCD调整,影响AF、CF,其余无定义

AAS

减法分离BCD调整,影响AF、CF,其余无定义

DAA

加法组合BCD调整,OF无定义,影响其余标志位

DAS

减法组合BCD调整,OF无定义,影响其余标志位

AAM

乘法分离BCD调整,影响S,Z,P;

O,C,AF无定义

AAD

例4.2.1求两个4位组合BCD数的和P77

设变量定义如下:

BCD1DB45H,19H;

BCD1=1945

BCD2DB71H,12H;

BCD2=1271

BCD3DB2DUP(?

);

存和=3216

表4.13程序及运算结果

程序

结果

AL

AF

CF

BCD3

BCD3+1

MOVAL,BCD1

45H

·

ADDAL,BCD2

B6H

16H

MOVBCD3,AL

MOVAL,BCD1+1

19H

ADCAL,BCD2+1

2CH

32H

MOVBCD3+1,AL

例4.2.2设有两数X、Y,且X=85,Y=6,用分离BCD数完成X/Y与X×

Y

BCD1DB05H,08H

BCD2DB06H

BCD3DB3DUP(?

X/Y程序如下:

P77

MOVAH,0

MOVAL,BCD1+1;

(AL)=08

MOVBL,BCD2;

(BL)=06

DIVBL;

(AX)/(BL)→(AL)=01,(AH)=02余数

MOVBCD3+1,AL;

商高位送BCD3+1

MOVAL,BCD1;

(AL)=05

AAD;

(AL)=(AH)×

10+(AL)=25,0→(AH)

(AX)/(BL)→(AL)=04,(AH)=01

MOVBCD3,AL;

商低位送BCD3

MOVBCD3+2,AH;

商低位送BCD3+2

Y程序如下:

P78

MULBCD2;

(AL)×

(BCD2)→(AX),AX=001EH

AAM;

(AX)=0300H

MOVWORDPTRBCD3,AX;

(BCD3)=00,(BCD3+1)=03

(AL)=08

(BCD2)→(AX),AX=0030H

(AX)=0408H

ADDAL,BCD3+1;

(AL)=0BH

AAA;

(AL)=01H,(AH)=05

MOVWORDPTRBCD3+1,AX;

(BCD3+2)=05,(BCD3+1)=01,

(BCD3)=00

4.2.3逻辑运算类指令P78

表4.14逻辑运算指令助记符与功能P78

ANDDST,SRC

(DST)=(DST)∧(SRC)

ANDDST,DATA

(DST)=(DST)∧DATA

ORDST,SRC

(DST)=(DST)∨(SRC)

ORDST,DATA

(DST)=(DST)∨DATA

XORDST,SRC

(DST)=(DST)

XORDST,DATA

(DST)=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1