第三章寻址方式讲义

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8088/8086 CPU 的寻址方式
定义:
确定操作数存在的方式,称为寻址方式
寄存器寻址方式
立即数寻址方式 存储器寻址方式 其它寻址方式
微机原理及应用
8088/8086 CPU 的寻址方式
立即数寻址
非存储器寻址方式
寄存器寻址
直接寻址
寄存器间接寻址
存储器寻址方式
基址寻址 变址寻址 基址加变址寻址
指令中有源操作数且有目的操作数出现
微机原理及应用
指令的基本格式

计算机中的指令集 复杂指令集 —— CISC (Complex Instruction Set Computer)
指令较复杂,每条指令字节长度不一致及指令种 类多,以Intel公司为代表的CPU,例如8086CPU芯片
精简指令集 —— RISC (Reduced Instruction Set Computer)
微机原理及应用
B0 —— 段超越前缀机器码
B0 = 001XX110
X 0 0 1 1 X 0 1 0 1 段名及机器码 ES = 00100110 = 26H CS = 00101110 = 2EH SS = 00110110 = 36H DS = 00111110 = 3EH
注:可变长度,从 1 字节指令 ~ 7 字节指令
微机原理及应用
8088/8086 CPU 通用指令格式

B0 —— 前缀操作码字节(扩展)
确定操作数存放在 DS、ES、SS、CS 段中

B1、B2 —— 可变操作码段字节
B1字节 —— 基本操作码定义(必要条件) B2字节 —— 寻址方式定义(充分条件)

微机原理及应用
指令助记符 ADD AH,[ BX+20H ] 指令机器码 02H、67H、20H 分析
• B1 = 02H = 00000010B OP = 000000 ADD 基本操作码码头 D=1 AH为目的寄存器操作数 AH在B2中为REG编码 [BX+20H]在B2中为R/M 编码 W= 0 • MOD = 01 REG = 100 R/M = 111 • B3 = 20H AH为字节操作数, 存储器寻址方式编码 目的寄存器操作数 AH 的编码 源存储器操作数 [BX+D8] 的编码 存储器相对寻址中的 D8 值 B2 = 67H = 01100111B
指令较简单,每条指令字节长度一致及指令种 类少,以 IBM 公司为代表的 CPU ,例如 POWER PC 芯片
微机原理及应用
8088/8086 CPU 通用指令格式
B0 B1 B2 B3 B4 B5 B6
B0
指令前缀操作码 B1、B2 指令可变操作码段 B2 、B3、B4、B5、B6 指令可变操作数段
微机原理及应用
指令助记符 MOV BL,DH 指令机器码 ?、? 解 8AH、DEH
• B1 = ? = 10001010B = 8AH
OP = 100010 MOV 基本操作码头 D=1 指向目的寄存器 BL B2 中BL 为REG 编码、DH 为R/M编码 W = 0 BL、DH 为字节操作数类型 B2 = ? = 11011110B = DEH MOD = 11 REG = 011 R/M = 110 寄存器寻址方式编码 目的寄存器操作数 BL 的编码 源寄存器操作数 DH 的编码
微机原理及应用
指令助记符 ADD [ BX+20H ],AH 指令机器码 00H、67H、20H 分析
• B1 = 00H = 00000000B OP = 000000 D=0 ADD 基本操作码码头 AH为源寄存器操作数 AH在B2中为REG编码 [BX+20H]在B2中为R/M 编码 W=0 • MOD = 01 REG = 100 R/M = 111 • B3 = 20H AH为字节操作数 存储器寻址方式编码 源寄存器操作数 AH 的编码 目的存储器操作数 [BX+D8] 的编码 存储器相对寻址中的 D8 值 B2 = 67H = 01100111B
其它寻址方式
固定寻址、相对寻址、I/O端口寻址
微机原理及应用
8088/8086 CPU 的寻址方式

寄存器寻址方式
定义:操作数隐含在寄存器中 指 令: PUSH AX 机器码: 50H(一字节操作码) 功 能:(AX) → [ SS:SP ]
指 令: MOV AX,BX 机器码: 8BH、C3H (二字节操作码) 功 能:(AX) ← (BX)
微机原理及应用
8088/8086 CPU 的寻址方式

立即数寻址方式
定义:操作数立即出现在操作码的后面
指 令: MOV AL,20H 机器码: B0H(码)、20H(8 位立即数) 功 能:(AL) = 20H
指 令: MOV AX,2000H 机器码: B8H(码)、00H、20H (16位立即数) 功 能:(AX) = 2000H
REG = 001
R/M = 000
目的寄存器操作数 CX 的编码
源寄存器操作数 AX 的编码
微机原理及应用
指令助记符 MOV AX,CX 指令机器码 8BH、C1H 分析
• B1 = 8BH = 10001011B
OP = 100010 D=1 基本操作码头 AX在B2中为REG编码 CX 在 B2中为R/M 编码 W=1 AX、CX 为字操作数 寄存器寻址方式编码
注:OP 与操作码有关;dst、src 是操作数
微机原理及应用
指令的基本格式

8088/8086 CPU 的操作码段
一字节操作码 二字节操作码

8088/8086 CPU 的操作数段
字节数从 0 字节到 4 字节 由不同的寻址方式寻找操作数
微机原理及应用
指令的基本格式

操作数的存在形式
操作数隐含在操作码中 操作数本身在代码段中 操作数在寄存器中寻找 操作数在数据段中寻找
微机原理及应用
指令的基本格式

指令中的操作数
无操作数指令
指令中操作数隐含
例:XLAT 例:PUSH AX 例:MOV AX,BX
单操作数指令 双操作数指令
指令中仅有源操作数或者目的操作数出现
微机原理及应用
8088/8086 CPU 的寻址方式

存储器寻址方式
定义:操作数段为操作数存放的存储器地址值
• 特点:寻址方式多样、灵活、应用广泛
需进行地址运算,相对速度较慢 • 条件:指令中仅有一个存储器操作数, 可以是源操作数或者目的操作数 • 形式:存储器操作数助记符表示为 [ ]
微机原理及应用
8088/8086 CPU 的寻址方式
存储器寻址方式的种类
• 直接寻址方式
• 寄存器间接寻址方式
• 寄存器相对寻址方式
• 基址变址寻址方式
• 相对基址变址寻址方式
微机原理及应用
8088/8086 CPU 的寻址方式
直接寻址方式
定义:操作数存放在用直接数表示的地址单元中 •指 令 MOV AX,[ 2000H ] • 机器码 A1H(码)、00H、20H(数段) •功 能 (AX)= [ 2000H ] 中的数 注:直接数为隐含段 DS 内的偏移地址
b6 ~ b7(MOD)
寻址方式编码(共 4 种)
b3 ~ b5(REG)
寄存器名编码(共 8 种)
b0 ~ b2 (R/M)
寄存器/存贮器寻址方式编码(共 8 种)
微机原理及应用
8088/8086 CPU 通用指令格式

b6 ~ b7(MOD)—— 寻址方式编码
b7、b6 = 11

B3、B4、B5、B6 —— 可变操作数段字节
操作数或操作数存放的直接地址定义 字节操作数或字操作数的类型定义
微机原理及应用
8088/8086 CPU 通用指令格式

B1字节的位定义(基本操作码定义)
b2 ~ b7 (OP)—— 64 种基本的操作码定义
b1 (D) —— 寄存器操作数的位置定义
微机原理及应用
存储器寻址方式机器码分析
• ADD AH,[BX+20H] 机器码为 02H、67H、20H
ADD [BX+20H],AH 机器码为
00H、67H、20H

D = 0 指向目的寄存器
D = 1 指向源寄存器
• 源、目的寄存器、存储器交换位置后
机器码 B1字节变,B2字节不变
微机原理及应用
寄存器寻址方式 b7、b6 = 00、01、10
存贮器寻址方式
微机原理及应用
8088/8086 CPU 通用指令格式

b3 ~ b5(REG)—— 寄存器名编码
b5 b4 b3 W = 0(8位REG) W = 1 (16位REG) 0 0 0 AL AX 0 0 1 CL CX 0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 DL BL AH CH DH BH DX BX SP BP SI DI
微机原理及应用
指令的基本格式

操作码与操作数
动作 —— 计算机怎么做(操作码)
主体 —— 计算机做什么(操作数)
操作码
由CPU芯片设计人员定义
操作数
由程序员使用不同的寻址方式确定
微机原理及应用
指令的基本格式

指令的一般构成
操作码 操作数 操作码段 操作数段

指令的助记符形式 OP dst,src
微机原理及应用
8088/8086 CPU 通用指令格式

b0 ~ b2(R/M) —— 存贮器寻址方式编码
b2 b1 b0
0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1
MOD=00
[BX+SI] [BX+DI] [BP+SI] [BP+DI]
MOD = 01
[BX+SI+D8] [BX+DI+D8] [BP+SI+D8] [BP+DI+D8]
MOD = 10
[BX+SI+D16] [BX+DI+D16] [BP+SI+D16] [BP+DI+D16]
1 0 0
[SI]
[DI] 未用 [BX]
[SI+D8]
[DI+D8] [BP+D8] [BX+D8]
[SI+D16]
[DI+D16] [BP+D16] [BX+D16]
微机原理及应用
指令助记符 MOV CX,AX 指令机器码 8BH、C8H 分析
微机原理及应用
8088/8086 CPU 指令系统 主要内容

指令的基本格式
8088/8086CPU 的寻址方式
8088/ 8086CPU 指令系统

中断指令和 DOS 功能调用
微机原理及应用
指令的基本格式

人类语言的共同点
语言
中文: 我是学生
英文: I am student
语法
主体 —— 动作
• B1 = 8BH = 10001011B
OP = 100010 D=1 基本操作码码头 CX为目的寄存器操作数(总指向目的操作数) CX在B2中为REG 编码 AX在B2中为R/M 编码 W=1 CX、AX 为字操作数 寄存器寻址方式编码

B2 = C8H = 11001000B
MOD = 11
AX为目的寄存器操作数(总指向目的操作数)

B2 = C8H = 11000001B
MOD = 11
REG = 000
R/M = 001
目的寄存器操作数 AX 的编码
源寄存器操作数 CX 的编码
微机原理及应用
寄存器寻址方式机器码分析
• MOV CX,AX 的机器码为 8BH、C8H
MOV AX,CX 的机器码为 8BH、C1H • D 必为1,即指向目的寄存器操作数 • 源、目的寄存器交换位置后 机器码 B1字节不变,B2字节变
D = 0 寄存器操作数为源操作数
D = 1 寄存器操作数为目的操作数
注: D 值影响 B2 中 REG 的确定
b0 (W) —— 操作数的类型定义
W = 0 字节操作数,8bit W = 1 字操作数,16bit
微机原理及应用
8088/8086 CPU 通用指令格式

B2字节的位定义(寻址方式定义)
微机原理及应用
Fra Baidu bibliotek
立即寻址与直接寻址比较
• 立即寻址 MOV AX,2000H 操作数为 2000H,在CS段 CS段
B8H
00H
20H
• 直接寻址
MOV AX,[ 2000H ] 操作数存放在 DS 段的偏移 地址 2000H 中
CS段
A1H
00H
20H
微机原理及应用
存储器寻址中的段超越前缀
概念:从 DS 段外的其它段中寻找操作数 MOV AX,[ 2000H ] 注:省略段符时,隐含为 DS 段 MOV AX,DS:[ 2000H ] MOV AX,SS:[ 2000H ] MOV AX,ES:[ 2000H ] MOV AX,CS:[ 2000H ] 注:给出段符时,确定了操作数的段特性
相关文档
最新文档