80X86寻址方式和指令系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P52表2.1 段寄存器使用的一些基本约定 存储器操作数的偏移地址(也称有效地址)可以通过不同
的寻址方式由指令给出。 例如,若(BX)=2000H, (SI)=0A00H, (DI)=2A00H,则以下指令 的结果是一样的:
MOV AL, [2A00H] MOV AL, [BX+0A00H] MOV AL, [BX][SI] MOV AL, [DI]
MOV AX , [2A00H] MOV DX , ES: [2A00H] MOV SI , TABLE_PTR
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
执行指令:A10231 MOV AX,[3102H] 后
AL (3102H) , AH (3103H) 如果(DS)=2000H, (23012H) = CDH, (23013H) = ABH
EA =
(BX) + (SI) + 8位
(BP)
(DI)
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
“相对的基址变址寻址”方式主要用于对二维数组的访问。
错误例:
× MOV 2A00H, AX ; 错误!
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
例如: B80231 MOV AX,3102H 执行后,(AH) = 31H,(AL) = 02H
立即寻址指令在 存储器中的存放 形式
AX AH AL
存储器
操作码
立 即 数
低8位
高8 位
代 码 段
B8

02


31
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
②寄存器寻址
操作数放在指令指定的某个寄存器或默认的寄存器中;
源操作数与目的操作数类型要相同;
寄存器寻址与段地址无关。
例如:
MOV AX, BX
MOV [3F00H], AX
MUL CL 错误例:
× MOV AX, BL
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统 ⑧ 隐含寻址 指令操作数是隐含的,在指令中未显式地指明。 例如:MUL BL 执行的操作: (AL)×(BL)→AX 类似的指令还有:DIV、CBW、MOVS等 ⑨比例变址寻址(80386扩展的指令) 操作数在内存储器中; 有效地址的形成:
第3章 80X86寻址方式和指令系统
⑷ 三地址指令
操作码(OP)
D1
D2
D3
(D1)OP(D2) → D3
微机中一般没有这种指令。 4、指令长度与字长的关系 ⑴指令长度主要由操作码位数、操作数地址位数和 操作数地址个数决定; ⑵指令字长位数越多,所能表示的操作信息和地址 信息越多,指令功能越强; ⑶变字长指令系统和定字长指令系统
EA= 位移量+变址寄存器*比例因子 例如:指令 MOV EAX,[ARRAY+4*EBX] 将内存DS:[ARRAY+4*EBX]中双字数据送入EAX中。
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
SI
DI 只能存放字操作数
BP
SP
CS
DS
段寄存器存放当前
ES
操作数的段地址
SS
不允许将立即数传送到段寄存器
西南大学电子信息工程80学X院86寻址刘方东式卓和指电令话系:统13637788155
第3章 80X86寻址方式和指令系统
⑶存储器操作数
存储器操作数
类型 字节 字 双字
第3章 80X86寻址方式和指令系统 ⑵寄存器操作数
放在8个通用寄存器或4个段寄存器中的操作数, 其中AX、BX、CX、DX可作为16位或8位寄存器使 用。
AX AH AL BX BH BL CX CH CL DX DH DL
西南大学电子信息工程80学X院86寻址刘方东式卓和指电令话系:统13637788155
DS 8 0 0 0 BX 2 0 0 0 + SI 1 0 0 0
8 3 0 0 0H
… 操作码 代码段

AX
AH AL
83000H YY XX

80X86寻址方式和指令系统
数据段
第3章 80X86寻址方式和指令系统
⑦ 相对的基址变址寻址
在基址变址寻址的基础上再加上一个相对位移量 注意事项同基址变址寻址
西南大学电子信息工程80学X院86寻址刘方东式卓和指电令话系:统13637788155
第3章 80X86寻址方式和指令系统
3、按指令中操作数地址个数分类的几种指令格式 ⑴零地址指令
操作码(OP) 指令中只有操作码,没有操作数的地址。 指令无需操作数,例如:
90 NOP FB STI 等指令。 隐含操作数地址 例如: 37 AAA 50 PUSH AX A4 MOVSB
存储单元个数 1 2 4
一般不允许两个操作数同时为存储器操作数
西南大学电子信息工程80学X院86寻址刘方东式卓和指电令话系:统13637788155
第3章 80X86寻址方式和指令系统
存储单元的物理地址 = 段地址 ×10H+ 偏移地址 若指令中没有指明所涉及的段寄存器,CPU就采用默
认的段寄存器来确定操作数所在的段。
F6E3 MUL BL
西南大学电子信息工程80学X院86寻址刘方东式卓和指电令话系:统13637788155
第3章 80X86寻址方式和指令系统
⑶二地址指令
操作码(OP) (D1)OP(D2)→D1
目的操作数地址 (D1)
源操作数地址 (D2)
例如: 02EB ADD CH , BL
;见P82 表3.5
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
⒉80X86操作数的寻址方式
① 立即寻址
;见P71
操作数(为一常数)直接由指令给出;
操作数在代码段,紧跟在操作码后面,执行时没有总线
周期,运行速度快;
立即寻址只能用于源操作数
例如:
MOV AX, 1C8FH
MOV BYTE PTR[2A00H], 8FH
第3章 80X86寻址方式和指令系统
例如: 操作码 MOV ADD
INC HLT
操作数
AX , BX ;两个寄存器操作数
AX,[SI+6] ; 寄存器操作数和存储器操
;作数各一个
[BX]
;单操作数
;无操作数
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
2、8088/8086的操作数分类 ⑴立即数(常数) 取值范围:
63A00H
8B
87 代
00
码 段
2A
AX AH AL

63A00H 66

55 据


80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
⑥ 基址变址寻址 操作数的有效地址,由指令中指定的一个基址寄存器的内 容和一个变址寄存器的内容相加而形成。
EA =
(BX) (BP)
+
(SI)
(DI)
80X86采用变字长指令系统。
西南大学电子信息工程80学X院86寻址刘方东式卓和指电令话系:统13637788155
第3章 80X86寻址方式和指令系统 5、指令的执行时间
一条指令的执行时间=∑ 单位用时钟周期数表示
取指令 取操作数 执行指令 传送结果
结论: 1)尽量使用寄存器作为操作数 2)若有可能,用移位代替乘除法 3)尽量使用简单的寻址方式
MOV CL, CS:[DI] MOV AX, [DX] × MOV CL, [AX] ×
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
执行指令:B804 MOV AX,[SI] 若 (DS)=6000H, (SI)=1200H
(61200H)=44H, (61201H)=33H 则指令执行后,(AX)=3344H。
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
§3.2 80X86的寻址方式
⒈“寻址”的概念 寻找操作数或操作数的地址(操作数的寻址); 寻找要执行的下一条指令的地址(指令的寻址)。
寻址方式的多少,体现一个处理器获取操作数的能力,以及 程序执行的灵活性和效率。
在80X86指令系统中: 操作数的寻址方式可分为11种; 指令的寻址方式可以分为4种。
80X86寻址方式和指令系统
接给出操作数的16位偏移地址 偏移地址也称为有效地址(EA, Effective Address)
操作数在内存中,运行时有总线操作,默认DS段寄存器, 但可以加“段超越前缀”改变这种约定; 偏移地址也可用符号地址来表示。 例如:
DS 6000
SI 1200
存储器
60000 +) 1 2 0 0
61200
61200H
44
AX
33
33H 44H
段数 据
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
⑤ 寄存器相对寻址
操作数的有效地址等于指令中指定的间址寄存器的内容 加上一个8/16位的位移量;
EA =
(BX) (BP) (SI) (DI)
则操作数的物理地址为: 2000H×10H+3102H = 23102H
存储器
指令执行后:(AX) = ABCDH AH AL
A1

02

31

..
23102H
CD

AB
据 段
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
④ 寄存器间接寻址 操作数的偏移地址(有效地址EA)放在指令指定的寄存器中 或默认的寄存器中; 操作数在内存中,运行时有总线周期; 只有SI、DI、BX和BP可作间接寻址寄存器; 用SI,DI和BX作为间址寄存器,操作数默认在DS段;用 BP作为间址寄存器,操作数默认在SS段。可以加“段超越 前缀”改变这种约定。 例如: MOV AX, [BX]
8位 无符号数 00H-FFH(0-255)
16位 0000H-FFFFH(0-65535)
带符号数 80H-7FH(-128~127) 8000H-7FFFH(-32768~32767)
立即数只能用作源操作数
例如: MOV AX,0FA00H ;正确 MOV 8000H,DX ;错误
80X86寻址方式和指令系统
在一条指令中,不能同时使用两个基址寄存器或两个变址 寄存器。 其它特点与寄存器间接寻址相同。
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
例如: MOV MOV MOV
AX, [BX] [SI] AX, [BX+SI] AX, DS: [BP] [DI]
MOV AX, [BX] [BP] MOV AX, [DI] [SI]
;× ;×
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
执行指令 MOV AX,[BX][SI] 若(DS)=8000H, (BX)=2000H, SI=1000H 则物理地址 = 80000H + 2000H + 1000H = 83000H
指令执行后: (AL)=[83000H] (AH)=[83001H]
0 0 0 0 0 0 1 0 1 1 101 011 D W mod reg r/m
Mod=11,寄存器寻址方式, D=1,w=0,reg字段所指寄存器CH为目的操作数; D=1,w=0,r/m字段所指寄存器BL为源操作数。
西南大学电子信息工程80学X院86寻址刘方东式卓和指电令话系:统13637788155
+
8位
16位
其它特点与寄存器间接寻址相同。
寄存器相对寻址常用于存取表格或一维数组中的元素——把 表格的起始地址作为位移量,元素的下标值放在间址寄存器 中(或反之)
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
例如:8B87002A MOV AX, [BX+2A00]
DS 6000 BX 1000 + DATA 2A00
西南大学电子信息工程80学X院86寻址刘方东式卓和指电令话系:统13637788155
第3章 80X86寻址方式和指令系统
⑵一地址指令 指令中只有一个操作数的地址。
操作码(OP) 操作数地址 只有目的操作数的单操作数指令 例如:
FE060020 INC BYTE PTR [2000] 隐含约定目的地的双操作数指令 例如:
; 类型不同
× MOV ES: AX, DX ; 寄存器与段无关
80X86寻址方式和指令系统
第3章 80X86寻址方式和指令系统
执行指令:89C6 MOV SI,AX
; SI
若指令执行前:(AX)=2233H
则指令执行后:(AX)=2233H,(SI)=2233H
(AX)
AX
2233H
SI
2233H
相关文档
最新文档