37
1 第第第 8088/8086 第第第

第三章 8088/8086 指令系统

Embed Size (px)

DESCRIPTION

第三章 8088/8086 指令系统. 主要内容:. 指令系统的一般概念 对操作数的寻址方式 六大类指令的操作原理 操作码的含义 指令对操作数的要求 指令执行的结果. 3.1 概述. 8088/8086 指令系统 : (1) 指令向后兼容( x86 系列) (2)应用广泛 , 资料易于寻找 。. 指令 —— 控制计算机完成指定操作的命令 机器指令 —— 指令的二进制代码形式。例如: CD21H 汇编指令 —— 助记符形式的指令。例如: INT 21H 指令系统 ——CPU 所有指令及其使用规则的集合. 指令 按功能分为六大类 ( 92 种). - PowerPoint PPT Presentation

Citation preview

Page 1: 第三章    8088/8086 指令系统

1

第三章 8088/8086 指令系统

Page 2: 第三章    8088/8086 指令系统

2 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

主要内容:1. 指令系统的一般概念2. 对操作数的寻址方式3. 六大类指令的操作原理 操作码的含义 指令对操作数的要求 指令执行的结果

Page 3: 第三章    8088/8086 指令系统

3 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

——指令 控制计算机完成指定操作的命令机器指令——指令的二进制代码形式。例如: CD21H汇编指令——助记符形式的指令。例如: INT 21H指令系统—— CPU 所有指令及其使用规则的集合

8088/8086 指令系统 :( 1 )指令向后兼容( x86 系列)( 2)应用广泛,资料易于寻找。

3.1 概述

Page 4: 第三章    8088/8086 指令系统

4 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

指令按功能分为六大类( 92 种)

( 1)数据传送类;( 2)算术运算类;( 3)逻辑运算和移位;( 4)串操作;( 5)控制转移类;( 6)处理器控制。

Page 5: 第三章    8088/8086 指令系统

5 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

3.1.1 指令的基本构成

说明要执行的是什么操作

操作对象,可以有 0个、 1个或2个

目的 源

Page 6: 第三章    8088/8086 指令系统

6 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

指令举例:

ADD AX , [SI+6]

MOV AX , BX

操作码 操作数

INC [BX]HLT

Page 7: 第三章    8088/8086 指令系统

7 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

部分 8088 常用指令指令类型 助记符

数据传送

数据传送 MOV , PUSH/POP , XCHG等地址传送 LEA , LDS , LES

输入输出 IN , OUT

算术运算

加法 ADD , ADC , INC

减法 SUB , SBB , DEC , NEG , CMP

乘 /除法 MUL , IMUL , DIV , IDIV

逻辑 AND , OR , NOT , XOR , TEST

移位 SHL/SHR/SAR , ROL/ROR , RCL/RCR

串操作 MOVS , CMPS , SCAS , LODS , STOS

控制转移 JMP , JXX , LOOP , CALL/RET , INT/IRET

Page 8: 第三章    8088/8086 指令系统

8 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

8088/8086 的操作数分为 3 类1 、立即数(常数)取值范围如下表:

8 位 16 位无符号数 00H-FFH(0-255) 0000H-FFFFH(0-65535)

带符号数 80H-7FH(-128~127)

8000H-7FFFH(-32768~32767)

MOV AX , 0FA00H ; 正确MOV 8000H , DX ; 错误

Page 9: 第三章    8088/8086 指令系统

9 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

16位 AX

AH AL

•2 、寄存器操作数放在 8 个通用寄存器或 4 个段寄存器中的操作数

16位 BX

BH BL

16位 CX

CH CL

16位 DX

DH DL

Page 10: 第三章    8088/8086 指令系统

10 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

只能存放字操作数

段寄存器存放当前操作数的段基地址。

不允许将立即数传送到段寄存器。

SI

DI

BP

SP

CS

DS

ES

SS

Page 11: 第三章    8088/8086 指令系统

11 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

•3 、存储器操作数

存储器操作数

字节

双字

1

2

4

类型 存储单元个数

一般不允许两个操作数同时为存储器操作数。

Page 12: 第三章    8088/8086 指令系统

12 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

存储单元的 物理地址 = 段基地址 + 偏移地址若指令中没有指明所涉及的段寄存器, CPU就采用默认的段寄存器来确定操作数所在的段。

表 3.3 段寄存器使用的一些基本约定存储器操作数的偏移地址(也称有效地址)可以通过不同的寻址方式由指令给出。

例如,若 (BX)=2000H, (SI)=0A00H, (DI)=2A00H ,则以下指令的结果是一样的:

MOV AL, [2A00H]MOV AL, [BX+0A00H]MOV AL, [BX][SI]MOV AL, [DI]

Page 13: 第三章    8088/8086 指令系统

13 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

• 一条指令的执行时间 =∑

3.1.2 指令的执行时间取指令取操作数执行指令传送结果单位用时钟周期数表示

表 3.4 常用指令执行时间

表 3.5 计算偏移地址 EA 所需时间

Page 14: 第三章    8088/8086 指令系统

14 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

• 结论:• 1 )三类立即数中,寄存器、立即数、

存储器指令执行速度依次降低。因此,尽量使用寄存器作为操作数

• 2 )若有可能,用移位代替乘除法;• 3 )尽量使用简单的寻址方式。

Page 15: 第三章    8088/8086 指令系统

15 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

寻址方式——寻找操作数所在地址的方法

寻找操作数的地址(一般指源操作数)

寻找要执行的下一条指令的地址。

在 8086指令系统中,说明操作数所在地址的寻址方式可分为 8 种: ① 立即寻址 ⑤ 寄存器相对寻址 ② 直接寻址 ⑥基址 - 变址寻址 ③ 寄存器寻址 ⑦相对的基址 - 变址寻址 ④ 寄存器间接寻址 ⑧隐含寻址

3.2 8086 的寻址方式

Page 16: 第三章    8088/8086 指令系统

16 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

操作数 ( 为一常数 )直接由指令给出 ( 此操作数称为立即数 ) ;立即寻址只能用于源操作数。 例: MOV AX, 1C8FH

MOV AX, 3102H

错误例: × MOV 2A00H, AX ; 错误!

3.1.2 立即寻址

Page 17: 第三章    8088/8086 指令系统

17 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

立即数

操作码低 8位高 8 位

代码段

立即寻址指令在存储器中的存放形式

存储器

MOV 操作码

02H

31H

AH AL

代码段

AX

指令操作例: MOV AX , 3102H ; AX 3102H

执行后, (AH) = 31H , (AL) = 02H

Page 18: 第三章    8088/8086 指令系统

18 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

3.2.2 直接寻址 指令中直接给出操作数的 16位偏移地址。

偏移地址也称为有效地址 (EA, Effective Address)

默认的段寄存器为 DS ,但也可以显式地指定其他段 寄存器——称为段超越前缀

偏移地址也可用符号地址来表示,如 ADDR 、 VAR

例: MOV AX , [2A00H]

MOV DX , ES: [2A00H]

MOV SI , TABLE_PTR

Page 19: 第三章    8088/8086 指令系统

19 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

指令操作例: MOV AX , [3102H]

AL (3102H) , AH (3103H)如果 (DS)=2000H, (23012H) = CDH, (23013H) = ABH

则操作数的物理地址为: 20000H+3102H = 23102H

指令执行后: (AX) = ABCDHMOV 操作码

02H31H

AH AL

23102H CDHABH

存储器

代码段

数据段

..

Page 20: 第三章    8088/8086 指令系统

20 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

3.2.3 寄存器寻址 操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例: MOV AX, BX

MOV CL, AL

错误例: × MOV AX, BL ; 字长不同 × MOV ES: AX, DX ; 寄存器与段无关

Page 21: 第三章    8088/8086 指令系统

21 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

AX

SI

2233H

2233H

指令操作例: MOV SI , AX ; SI (AX)

指令执行前: (AX)=2233H

指令执行后: (AX)=2233H , (SI)=2233H

Page 22: 第三章    8088/8086 指令系统

22 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

3.2.4 寄存器间接寻址操作数的偏移地址 ( 有效地址 EA) 放在寄存器中,操作数本身放在存储器。只有 SI、DI、 BX和 BP 可作间址寄存器,对应不同的段寄存器。

例: MOV AX, [BX] MOV CL, CS:[DI] 错误例 : × MOV AX, [DX] × MOV CL, [AX]

EA =

(BX)

(SI)

(DI) (BP)

DSDSDSSS

Page 23: 第三章    8088/8086 指令系统

23 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学指令操作例: MOV AX , [SI]

若 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H

则指令执行后, (AX)=3344H 。

44H

33H

6000 1200DS SI

60000

61200 61200H

AX

存储器

数据段

+)

1200

44H33H

Page 24: 第三章    8088/8086 指令系统

24 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

3.2.5 寄存器相对寻址 EA=间址寄存器的内容加上一个 8/16位的位移量

寄存器相对寻址常用于存取表格或一维数组中的——元素 把表格的起始地址作为位移量,元素的

下标值放在间址寄存器中(或反之)

EA =

(BX)

(BP)

(SI)

(DI)

+ 8 位16位

位移量

Page 25: 第三章    8088/8086 指令系统

25 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

例: MOV AX, [BX+8]

MOV CX, TABLE[SI]

MOV AX, [BP+1000H] ; 默认段寄存器为 SS

指令操作例: MOV AX , DATA[BX]

• 若 (DS)=6000H, (BX)=1000H, DATA=2A00H,

• (63A00H)=66H, (63A01H)=55H

• 则物理地址 = 60000H + 1000H + 2A00H = 63A00H

• 指令执行后:( AX ) =5566H

•(见下页图示)

Page 26: 第三章    8088/8086 指令系统

26 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

操作码00 偏移量低2A 偏移量高

DS 6000

BX 1000

+ DATA 2A00

63A0063A00H

AH ALAX

代码段

数据段

...

...

...

66H55H

MOV AX , DATA[BX]

Page 27: 第三章    8088/8086 指令系统

27 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

3.2.6 基址 - 变址寻址 若操作数的偏移地址: 由基址寄存器 (BX 或 BP) 给出 —— 基址寻址方式 由变址寄存器 (SI 或 DI) 给出 —— 变址寻址方式由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址 -变址寻址

EA = (BX)

(BP)+

(SI)

(DI)

同一组内的寄存器不能同时出现。

Page 28: 第三章    8088/8086 指令系统

28 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

例: MOV AX, [BX] [SI]

MOV AX, [BX+SI]

MOV AX, DS: [BP] [DI]

错误例: × MOV AX, [BX] [BP]

× MOV AX, [DI] [SI]

Page 29: 第三章    8088/8086 指令系统

29 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

83000

操作码DS 8000

BX 2000 + SI 1000

83000H

AH ALAX

代码段

数据段

...

...

...

YY

XX

指令操作例: MOV AX , [BX][SI]假定: (DS)=8000H, (BX)=2000H, SI=1000H

则物理地址 = 80000H + 2000H + 1000H = 83000H指令执行后 : (AL)=[83000H] (AH)=[83001H]

Page 30: 第三章    8088/8086 指令系统

30 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

3.2.7 相对的基址 - 变址寻址 在基址 - 变址寻址的基础上再加上一个相对位移量 注意事项同基址 - 变址寻址

EA = (BX)

(BP)+

(SI)

(DI) + 8 位16位

位移量

例:MOV AX , BASE [SI] [BX]

MOV AX , [BX+BASE] [SI]

MOV AX , [BX+SI+BASE]

MOV AX , [BX] BASE [SI]

MOV AX , [BX+SI] BASE

Page 31: 第三章    8088/8086 指令系统

31 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

指令操作例: MOV AX, DATA[DI][BX]若 (DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H则指令执行后 (AH)=[83021H], (AL)=[83020H]

8320083200H

AH ALAX

+ DATA 0200

操作码 代码段

数据段

...

...

...

YY

XX

DS 8000

BX 2000 DI 1000

Page 32: 第三章    8088/8086 指令系统

32 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

使用相对的基址 - 变址寻址方式可以很方便地访问二维数组。

基址寄存器

数组首地址

变址寄存器

数组元素行址

位移量

数组元素列址

(偏移地址)

二维数组例:内存图示(按行存储)

(行位移地址)

(行内元素下标)

1 8 32 5 24 0 9

A =

Page 33: 第三章    8088/8086 指令系统

33 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

3.2.8 隐含寻址 指令操作数是隐含的,在指令中未显式地指明。

例: MUL BL

指令隐含了被乘数 AL 及乘积 AX ;

类似的指令还有: DIV 、 CBW 、 MOVS 等。

( AL) ×( BL →) AX

Page 34: 第三章    8088/8086 指令系统

34 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

指令由( )和( )构成

如何取得操作数——称为( )

操作码 操作数

寻址方式

小结:

Page 35: 第三章    8088/8086 指令系统

35 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

寻址方式可分为

立即寻址

直接寻址

寄存器相对寻址

寄存器寻址

基址 - 变址寻址

基址 - 变址相对寻址

寄存器间接寻址

Page 36: 第三章    8088/8086 指令系统

36 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

寄存器间接、寄存器相对、基址变址、相对基址变址四种寻址方式的比较: 寻址方式 指令操作数形式 寄存器间接 只有一个寄存器( BX/BP/SI/DI 之一) 寄存器相对 一个寄存器加上位移量 基址—变址 两个不同类别的寄存器 相对基址 - 变址 两个不同类别的寄存器加上位移量

Page 37: 第三章    8088/8086 指令系统

37 微机原理与接口技术微机原理与接口技术

西南交通大学本科教学西南交通大学本科教学

作业:3 - 2 ;1 、假设 (DS)=1000H , (ES)=1500H , (SS)=2

000H , (SI)=007FH , (BX)=0040H , (BP)=0016H ,变量 VAR 的偏移地址为 0100H ,请指出下列指令的源操作数属于何种寻址方式?并写出逻辑地址和物理地址?

( 1 ) MOV AX,[1234H]

( 2 ) MOV AX ,VAR

( 3 ) MOV AX,[BX+100H]

( 4 ) MOV AX,VAR[BP][SI]