3 2
This presentation is the property of its rightful owner.
Sponsored Links
1 / 20

3 .2 指令系统 PowerPoint PPT Presentation


  • 133 Views
  • Uploaded on
  • Presentation posted in: General

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]

Download Presentation

3 .2 指令系统

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3 2

3.2 指令系统

  • 按功能分为:

    • 数据传送指令

    • 算术运算指令

    • 位处理指令(逻辑运算指令)

    • 串操作指令

    • 控制转移指令

    • 处理机控制指令


3 2

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

内存

AX,BX

CX,DX

SI,DI

BP,SP

AH,AL

CH,CL

DH,DL

BH,BL

立即数

DS,ES,SS

1、ADD 指令

格式:ADD dest, src

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

例如:

ADDAX,BX

ADDCL,[SI]

ADDCL,AL

ADDDX,ES

ADDAL,30H

ADD BYTE PTR [DI],12H

  • 影响标志位OF SF ZF AF CF


3 2

1 结果为负

0 否则

1 结果为0

0 否则

1 和的最高位向高位有进位

0 否则

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

0 否则

SF=

ZF=

CF=

OF=

ADD 指令对标志位 SF ZF CF OF

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

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


3 2

无符号数溢出

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

有符号数溢出

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

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=最高位进位 异或 次高位进位


3 2

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

内存

AX,BX

CX,DX

SI,DI

BP,SP

AH,AL

CH,CL

DH,DL

BH,BL

立即数

DS,ES,SS

2、ADC 指令

格式:ADC dest, src

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

例如:

ADCAX,BX

ADCCL,[SI]

ADCCL,AL

ADCDX,ES

  • ADD、ADC影响标志位

  • OF SF ZF AF CF

  • INC不影响CF

  •  INC 3

3、INC 指令

格式:INC dest

功能: (dest) (dest) + 1

例如:INCCX


3 2

F 3 6 5 H

AX

(1)执行后

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

SF=1 ZF=0

0 0 0 2 H

DX

E 0 2 4 H

CX

ADD

0 0 0 5 H

BX

CF←1

D 3 8 9 H

AX

ADC

CF=1

(2) 执行后

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

SF=0 ZF=0

CF←0

0 0 0 8 H

DX

例:双精度数的加法

(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) ADD AX, CX

(2) ADC DX, BX

DEBUG演示


3 2

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

内存

AX,BX

CX,DX

SI,DI

BP,SP

AH,AL

CH,CL

DH,DL

BH,BL

立即数

DS,ES,SS

4、SUB 指令

格式:SUBdest, src

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

例如:

SUBAX,BX

SUBCL,[SI]

SUBDX,ES

SUBBP,78H

SUB[SI],BYTE PTR 64H

  • 影响标志位OF SF ZF AF CF


3 2

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

内存

AX,BX

CX,DX

SI,DI

BP,SP

AH,AL

CH,CL

DH,DL

BH,BL

立即数

DS,ES,SS

5、SBB 指令

格式:SBBdest, src

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

例如:

SBBAX,BX

SBBCL,[SI]

SBBCL,56H

6、DEC 指令

格式:DECdest

功能: (dest) (dest) - 1

例如:DECCX

DECCL

  • SUB、SBB 影响标志位

  • OF SF ZF AF CF

  • DEC 不影响CF

  •  DEC 3


3 2

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

内存

AX,BX

CX,DX

SI,DI

BP,SP

AH,AL

CH,LD

DH,DL

BH,BL

立即数

DS,ES,SS

(dest)

8、NEG 指令

格式:DEG dest

功能: (dest) + 1

例如:NEGCL

NEGDX

NEGSI

7、CMP 指令

格式:CMPdest, src

功能:(dest) -(src)

例如:

CMPAX,BX

CMPCL,[SI]

CMPCL,56H

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

  • NEG 不影响标志位

  •  NEG 3


3 2

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

>9

AL←AL+06H

AL低4位

AF=1

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

>9

AL←AL+60H

AL高4位

CF=1

0001 1001

0001 1001

+06H修正

+0000 1000

例如19+8=27的BCD加法

+0000 0110

0010 0001

0010 0111

AF=1

27BCD

  • OF不确定,其余标志位随运算结果而变。

  • 只能在ADD或ADC之后出现。

9、DAA 指令

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


3 2

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

运算:

1834H+2789H=40BDH

DAA

(4623)BCD

4623H

(1834)BCD+ (2789)BCD=4623D

MOVAL,34H;(AL)=34H

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

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

MOVAH,AL;(AH)=23H

MOVAL,18H;(AL)=18H

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

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

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

DEBUG演示


3 2

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

>9

AL←AL﹣06H

AL低4位

AF=1

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

>9

AL←AL﹣60H

AL高4位

CF=1

1010 1011

0011 0100

﹣ 06H修正

﹣ 0110 0110

﹣ 1000 1001

例如34 ﹣ 89=45的BCD减法

0100 0101

1010 1011

CF=1

AF=1

45BCD

  • OF不确定,其余标志位随运算结果而变。

  • 只能在SUB或SBB之后出现。

10、DAS 指令

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


3 2

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

11、MUL 指令

格式:MUL src

字节AL=dest

AX ←AL*SRC

功能:

字AX=dest

DX:AX ←AX*SRC

12、IMUL 指令

格式:IMUL src

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

  • AL(AX)为隐含的乘数寄存器

  • AX(DX:AX)为隐含的乘积寄存器

  • SRC不能为立即数。

  • 除CF和OF,对条件标志位无定义


3 2

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

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

00 乘积的高一半为零,无有效数据

11 否则

MUL指令: CF/OF =

00 乘积的高一半是符号扩展,无有效数据

11 否则

IMUL指令: CF/OF =

例:

MUL CL;(AL)*(CL)积在AX中

MULSI;(AX)*(SI)积在DX:AX中

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


3 2

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

13、DIV 指令

格式:DIV src

商: AL ←AX / SRC

余数: AH  AX / SRC

字节除:被除数 AX

功能:

商: AX ←DX:AX / SRC

余数: DX  DX:AX / SRC

14、IDIV 指令

格式:IDIV src

字除:被除数 DX:AX

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

  • AX(DX:AX)隐含的被除数寄存器。

  • AL(AX)隐含的商寄存器。

  • AH(DX)隐含的余数寄存器。

  • SRC不能为立即数。

  • 对所有条件标志位均无定义。

  • 商溢出错时,产生除法出错中断。


3 2

二、算术运算指令—符号扩展指令

15、CBW 指令

格式:CBW

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

若(AL)的最高有效位为1,则(AH)= 0FFH

16、CWD 指令

格式:CWD

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

若(AX)的最高有效位为1,则(DX)= 0FFFFH

  • 无操作数指令

  • 隐含对AL或AX进行符号扩展

  • 不影响条件标志位。

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

CBW ; (AX)=0045H

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

DEBUG演示


3 2

第 三 章 习 题 课

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.

在以上给出的环境下,试问下列指令或指令段执行后的结果如何?

(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=0056H

PA=DS*16+[BX+2H]=091D0H+0056H+2H= 09228H

(AX)=([09228H])=1E40H


3 2

第 三 章 习 题 课

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

debug x31入口137H


3 2

第 三 章 习 题 课

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.

在以上给出的环境下,试问下列指令或指令段执行后的结果如何?

(5) XCHG CX, [BX + 32H]

XCHG[ BX + 2OH] [SI] ,AX

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

与CX进行交换

(CX)=00F6H

([09226H])=(CX)=5678H

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

与AX进行交换

(AX)=5678H

([09226H])=1234H


3 2

  • 课后作业:

  • P128 3.2 (6) (7) (8) (9)

  • P1283.4 (1)(2)


  • Login