3 .2 指令系统

20
3 2 指指指指指指指指数数 数数数 数数数数数数 数数数数数 数数数数数数数 () 数数数数数 数数数数数数 数数数数数数数

Upload: wyatt-stone

Post on 30-Dec-2015

46 views

Category:

Documents


9 download

DESCRIPTION

3 .2 指令系统. 按功能分为: 数据传送指令 算术运算指令 位处理指令(逻辑运算指令) 串操作指令 控制转移指令 处理机控制指令. 二、 算术运算指令— 加法指令. 内存. AX , BX CX , DX SI , DI B P , SP. AH,AL CH , CL DH , DL BH , BL. 立即数. DS , ES,SS. 1、 ADD 指令 格式: ADD dest , src 功能: ( dest)  ( dest)+(src) 例如: ADD AX , BX ADDCL , [SI] - PowerPoint PPT Presentation

TRANSCRIPT

3 . 2 指令系统

按功能分为:•数据传送指令•算术运算指令•位处理指令(逻辑运算指令)•串操作指令•控制转移指令•处理机控制指令

二、算术运算指令—加法指令

1 、 ADD 指令

格式: ADD dest , src

功能: (dest) (dest)+(src)

例如:

ADD AX , BX

ADD CL , [SI]

ADD CL , AL

ADD DX , ES

ADD AL , 30H

ADD BYTE PTR [DI] , 12H

AX , BX

CX , DX

SI , DI

BP , SP

AH , AL

CH , CL

DH , DL

BH , BL

DS , ES ,SS

内存

立即数

•影响标志位 OF SF ZF AF CF

CF—— 表示无符号数相加的溢出。

OF—— 表示带符号数相加的溢出。

1 结果为负0 否则

SF=1 结果为 00 否则

ZF=

1 和的最高位向高位有进位0 否则

CF=

1 两个操作数符号相同,而结果符号与之相反0 否则

OF=

ADD 指令对标志位 SF ZF CF OF

无符号数溢出

0 0 0 0 0 1 1 1

+ 1 1 1 1 1 0 1 1

0 0 0 0 0 0 1 0

有: (+7)+(-5)=+2 OF=0

无: 7+251=2 CF=1

有符号数和无符号数都不溢出

0 0 0 0 0 1 0 0

+ 0 0 0 0 1 0 1 1

0 0 0 0 1 1 1 1

有: (+4)+(+11)=+15 OF=0

无: 4+11=15 CF=0

有符号数溢出

0 0 0 0 1 0 0 1

+ 0 1 1 1 1 1 0 0

1 0 0 0 0 1 0 1

有 :(+9)+(+124)=-123 OF=1

无 :9+124=133 CF=0

有符号数和无符号数都溢出

1 0 0 0 0 1 1 1

+ 1 1 1 1 0 1 0 1

0 1 1 1 1 1 0 0

有: (-121)+(-11)=+124 OF=1

无: 135+245=124 CF=1

n=8bit 带符号数 (-128~127) 无符号数 (0~255)

有符号数溢出 :OF= 最高位进位 异或 次高位进位

二、算术运算指令—加法指令

2 、 ADC 指令

格式: ADC dest , src

功能: (dest) (dest)+(src)+CF

例如:

ADC AX , BX

ADC CL , [SI]

ADC CL , AL

ADC DX , ES

AX , BX

CX , DX

SI , DI

BP , SP

AH , AL

CH , CL

DH , DL

BH , BL

DS , ES ,SS

内存

立即数

•ADD 、 ADC 影响标志位OF SF ZF AF CF •INC 不影响 CF INC 3

3 、 INC 指令

格式: INC dest

功能: (dest) (dest) + 1

例如: INC CX

例:双精度数的加法

(DX)= 0002H ( AX ) = 0F365H ( BX ) = 0005H ( CX ) = 0E024H

(DX):(AX)=0002H:F365H 与 (BX):(CX) =0005H:E024H 相加

即是: (DX):(AX) + (BX):(CX)= (DX):(AX)

2F365H+5E024H=8D389H

( 1 )执行后

( AX ) = 0D389H CF=1 OF=0

SF=1 ZF=0

AXF 3 6 5 H

CXE 0 2 4 HADD

AXD 3 8 9 HCF←1

指令序列 (1) ADD AX, CX

(2) ADC DX, BX

DX 0 0 0 2 H

BX 0 0 0 5 H

ADC

DX0 0 0 8 HCF←0

CF=1

( 2 ) 执行后

( DX ) = 0008H CF=0 OF=0

SF=0 ZF=0DEBUG演示

二、算术运算指令—减法指令

4 、 SUB 指令

格式: SUB dest , src

功能: (dest) (dest) - (src)

例如:

SUB AX , BX

SUB CL , [SI]

SUB DX , ES

SUB BP , 78H

SUB [SI] , BYTE PTR 64H

AX , BX

CX , DX

SI , DI

BP , SP

AH , AL

CH , CL

DH , DL

BH , BL

DS , ES ,SS

内存

立即数

•影响标志位 OF SF ZF AF CF

二、算术运算指令—减法指令

5 、 SBB 指令

格式: SBB dest , src

功能: (dest) (dest) - (src) -CF

例如:

SBB AX , BX

SBB CL , [SI]

SBB CL , 56H

AX , BX

CX , DX

SI , DI

BP , SP

AH , AL

CH , CL

DH , DL

BH , BL

DS , ES ,SS

内存

立即数

•SUB 、 SBB 影响标志位OF SF ZF AF CF •DEC 不影响 CF DEC 3

6 、 DEC 指令

格式: DEC dest

功能: (dest) (dest) - 1

例如: DEC CX

DEC CL

二、算术运算指令—减法指令

7 、 CMP 指令

格式: CMP dest , src

功能: (dest) - (src)

例如:

CMP AX , BX

CMP CL , [SI]

CMP CL , 56H

AX , BX

CX , DX

SI , DI

BP , SP

AH , AL

CH , LD

DH , DL

BH , BL

DS , ES ,SS

内存

立即数

•CMP 影响标志位不保存结果•NEG 不影响标志位 NEG 3

(dest)

8 、 NEG 指令

格式: DEG dest

功能: (dest) + 1

例如: NEG CL

NEG DX

NEG SI

二、算术运算指令—加法调整指令

9 、 DAA 指令

格 式 : 必 须 紧 跟 在ADD 、 ADC 之后。

•OF 不确定,其余标志位随运算结果而变。•只能在 ADD 或 ADC 之后出现。

AL 低 4位

> 9

AF=1

AL←AL+06H

AL 高 4位

> 9

CF=1

AL←AL+60H

功能:对 AL 中的压缩 BCD码加法结果进行修正。

例如 19+8=27 的 BCD 加法

0001 1001+0000 1000

0010 0001

AF=1

+06H修正

0001 1001+0000 0110

0010 0111

27BCD

二、算术运算指令—加法调整指令 (1834)BCD+ (2789)BCD=4623D

MOV AL , 34H ;( AL ) =34H

ADD AL , 89H ;( AL ) =34+89=BDH

DAA ;( AL ) =BDH+60H+06H=23H(AF=CF=1 )

MOV AH , AL ;( AH ) =23H

MOV AL , 18H ;( AL ) =18H

ADC AL , 27H ;( AL ) =18+27+1=40H

DAA ;( AL ) =40H+06H=46H ( AF=1 CF=0 )

XCHG AH , AL ; AX= (1834+2789=4623)BCD

DEBUG演示

运算 :

1834H+2789H=40BDHDAA

4623H (4623)BCD

二、算术运算指令—减法调整指令

10 、 DAS 指令

格式:必须紧跟在 SUB 、 SBB之后。

•OF 不确定,其余标志位随运算结果而变。•只能在 SUB 或 SBB 之后出现。

AL 低 4位

> 9

AF=1

AL←AL 06H﹣

AL 高 4位

> 9

CF=1

AL←AL 60H﹣

功能:对 AL 中的压缩 BCD码减法结果进行修正。

例如 34 ﹣ 89=45 的 BCD减法

0011 0100﹣ 1000 1001

1010 1011

AF=1

﹣ 06H修正

45BCD

CF=1

1010 1011﹣ 0110 0110

0100 0101

二、算术运算指令—乘法指令11 、 MUL 指令

格式: MUL src

功能:字节 AL=dest

字 AX=dest

AX ←AL*SRC

DX:AX ←AX*SRC

•AL(AX) 为隐含的乘数寄存器•AX(DX : AX) 为隐含的乘积寄存器•SRC 不能为立即数。•除 CF 和 OF ,对条件标志位无定义

12 、 IMUL 指令

格式: IMUL src

功能: IMUL 同 MUL 只是针对有符号数。

二、算术运算指令—乘法指令

00 乘积的高一半为零,无有效数据11 否则MUL 指令 : CF/OF =

00 乘积的高一半是符号扩展,无有效数据11 否则 IMUL 指令 : CF/OF =

•乘法指令对标志位影响:

例:MUL CL ;( AL ) * ( CL )积在 AX 中MUL SI ;( AX ) * ( SI )积在 DX : AX

中MUL AX ;( AX ) * ( AX )积在 DX :

AX 中

二、算术运算指令—除法指令

•AX(DX : AX) 隐含的被除数寄存器。•AL(AX) 隐含的商寄存器。•AH(DX) 隐含的余数寄存器。•SRC 不能为立即数。• 对所有条件标志位均无定义。•商溢出错时,产生除法出错中断。

13 、 DIV 指令

格式: DIV src

功能:

字节除:被除数 AX

字除:被除数 DX :AX

商: AL ←AX / SRC

余数: AH AX / SRC

商: AX ←DX : AX / SRC

余数: DX DX :AX / SRC

14 、 IDIV 指令

格式: IDIV src

功能: IDIV 同 DIV 只是针对有符号数。

二、算术运算指令—符号扩展指令 •无操作数指令•隐含对 AL 或 AX 进行符号扩展•不影响条件标志位。

15 、 CBW 指令

格式: CBW

功能: 若 (AL) 的最高有效位为 0 ,则 (AH)= 00H 若 (AL) 的最高有效位为 1 ,则 (AH)= 0FFH

16 、 CWD 指令

格式: CWD

功能: 若 (AX) 的最高有效位为 0 ,则 (DX)= 0000H 若 (AX) 的最高有效位为 1 ,则 (DX)= 0FFFFH

例: (AX)=0BA45H=1011 1010 0100 0101B

CBW ; (AX)=0045H

CWD ; (DX)=0FFFFH (AX)=0BA45H

DEBUG演示

第 三 章 习 题 课

(1) MOV CL, [ BX + 20H] [ SI];

PA=DS*16+[BX+SI+20H]=091DH*16+0024H+0012H+20H=09226H

( [09226H] ) = ( CL ) =F6H

(2) MOV [BP][DI], CX;

PA=SS*16+ ( [BP+DI] ) =1E4A0H+0024H+0032H=1E4F6H

( [1E4F6H] ) = ( CX ) =5678H

(3) LEA BX,[BX+20H][SI] MOV AX, [ BX + 2 ];(BX)= ( BX+SI+20H ) =0024H+0012H+20H=0056HPA=DS*16+[BX+2H]=091D0H+0056H+2H= 09228H(AX)= ([09228H])=1E40H

P128 3.1 题 已知 DS = 091DH, SS = 1E4AH, AX = 1234H, BX = 0024H, CX = 5678H, BP= 0024H, SI = 0012H, DI = 0032H, (09226H) = 00F6H, (09228H) =1E40H,(1E4F6H) = 091DH. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何 ?

第 三 章 习 题 课

(4) LDS SI, [BX][DI]

MOV [ SI], BX;

PA1=DS*16+BX+DI=091D0H+0024H+0032H=09226H

将 PA 所在单元的双字送入 DS 、 SI

SI= ( [09226] ) =00F6H

DS= ( [09228H] ) =1E40H

PA2=DS*16+SI=1E400H+F6H=1E40F6H

(1E40F6H)=0024H

P128 3.1 题 已知 DS = 091DH, SS = 1E4AH, AX = 1234H, BX = 0024H, CX = 5678H, BP= 0024H, SI = 0012H, DI = 0032H, (09226H) = 00F6H, (09228H) =1E40H,(1E4F6H) = 091DH. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何 ?

debug x31 137入口 H

第 三 章 习 题 课

(5) XCHG CX, [BX + 32H] XCHG [ BX + 2OH] [SI] ,AXPA1= DS*16+BX+32H =091D0H+0024H+0032H=09226H

与 CX 进行交换( CX ) =00F6H( [09226H] ) = ( CX ) =5678H

P128 3.1 题 已知 DS = 091DH, SS = 1E4AH, AX = 1234H, BX = 0024H, CX = 5678H, BP= 0024H, SI = 0012H, DI = 0032H, (09226H) = 00F6H, (09228H) =1E40H,(1E4F6H) = 091DH. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何 ?

PA2= DS*16+BX+SI+20H = 091D0H+0024H+0012H+0020H =09226H

与 AX 进行交换

( AX ) =5678H

( [09226H] ) =1234H

课后作业:1. P128 3.2 (6) (7) (8) (9)

2. P128 3.4 (1)(2)