4.1 寻址方式讲解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用存储器中二个相继字的内容取代IP、CS以达到段间 转移目的。 存储单元的地址是由指令指定除立即数方式和寄存器 方式以外的任何一种寻址方式取得。
16位位移量
8086的寻址方式
指令组成
计算机中指令由操作码字段和操作数字段两部分组成。 操作码字段-----指示计算机要执行的操作 操作数字段-----指出在指令执行操作过程中所需要的操作数 的信息。可以是操作数本身;可以是操作数地址或是地址 的一部分或其他有关 操作数的信息
指令的一般格式:
操作码 操作数 ...... 操作数
即操作数物理地址为: 物理地址PA=16 d ×(DS)+(BX/SI/DI) 若选择BP寄存器作为间接寻址
操作数在堆栈段区域中,用SS寄存器的内容作为段 地址。
操作数物理地址:
PA=16d × (SS)+(BP)
DS
DI 2000H 0 0 0 0 0
62000H
例:MOV BX,[DI] (DS)=6000H
AL
... 操作码 05H ... 指 令 代 码 段
例:
MOV AL,05H
05H
指令执行后: (AL)=05H
例: MOV AX,3064H 指令执行后: (AX)=3064H
AH 30H
AL 64H
... 操作码 64H 30H ... 指 令 代 码 段
寄存器寻址方式
操作数在寄存器中,指令指定寄存器号。 对于16位操作数,寄存器可以是: AX,BX,CX,DX,SI,DI,SP,BP。 对于8位操作数,寄存器可以是:
AH 30H
VALUE——有效操作数单元的
符号地址。 如:VALUE在附加段中, 则应指定段跨越。 MOV AX,ES:VALUE 或MOV AX,ES:[VALUE]
直接寻址方式
寄存器间接寻址方式
操作数在存储器中, 操作数地址的16位偏移量包 含在:BP、BX、SI、DI寄存器中。
若选择SI、DI、BX作为间接寻址 操作数一般在现行数据段区域中,用(DS)作为段地址。
+
1000H 1 0
3 0 0 0 1 3 AH 12H 0 0 AL 34H 0
13000H
(BP)=3000H ,
(AX)=1234H 执行后:PA=13000H (13000H)=1234H
34H 12H
堆 栈 段
...
寄存器间接寻址方式 MOV [BP], AX
寄存器相对寻址方式
操作数在存储器中,操作数的有效地址是一个基址 或变址寄存器的内容和指令中指定的8位或16位位移 量(displacement)之和。
(SI)
EA=
(BX)
+ (DI)
(SI)
EA=
(BP)
+ (DI)
除有段跨越前缀之外,形成物理地址有二种方式:
(SI) PA=16d×(DS )+ (BX) + (DI)
(SI) PA=16d×(SS)+ (BP) + (DI)
例: MOV AX, [BX][SI] 或 MOV AX, [BX+SI] 执行指令前: (DS)=3200H, (BX)=0456H, (SI) =1094H (334EAH)=4567H 执行指令后: EA=14EAH PA=334EAH (AX)=4567H
3064H
3064H
寄存器寻址方式
直接寻址
操作数在存储器中,操作数地址的16位偏移量,直 接包含在指令中, 存放在代码段中指令操作码之后。 操作数一般存放在数据段中。 在进行数据操作时,必须先求出操作数的物理地址, 然后再访问存储器才能取得操作数。
物理地址 : PA= 10H ×(DS)+EA
注:8086/8088允许数据存放在数据段以外的其它段中。 此时应在指令中指定段超越(可以是CS,SS,ES)。
指令的一般格式
操作码 操作数 ...... 操作数
指令的分类
按指令的长短分类:
单子节指令、二字节指令和多字节指令
按寻址方式分类:
访问存储器指令、访问寄存器指令和访问 输入输出端口指令
按指令的功能分类:
数据传送类指令 算术运算指令 逻辑运算指令、移位指令 标志处理和CPU控制指令 转移和循环控制指令 调用和返回指令 字符串操作指令 输入/输出指令
常用的各种缩写符号
缩写符号 意 操作数 义 缩写符号 意 地址 义
OPR SRC DST RSRC RDST CNT DISP D8 D16
源操作数
目的操作数 源寄存器 目的寄存器 计数
ADDR EA SEG DATA DATA8 DATA1 6
有效地址
段地址 立即数 8位立即数 16位立即数
位移量 8位位移量
功能: 用来确定转移指令及CALL指令的转移地址。 以转移指令为对象来分析各种转移地址寻址方式。
段内直接寻址
转向有效地址EA是(IP)当前和指令中指定的8位 或16位位移量之和。
段内间接寻址
转向有效地址是一个寄存器或一个存储单元的内容
段间直接寻址
指令中直接提供了转向段地址和偏移地址。
段间间接寻址
操作数的存放
操作数包含在指令中 例:MOV AL , 08H 操作数包含在CPU的一个内部寄存器中 例:INC CX 操作数在内存数据区 例:MOV AX,[3100H]
寻址方式
寻址方式——规定操作数的方法,即在指令中用于说 明操作数所在地址的方法。8086的寻址方式分为数据 寻址和转移地址寻址。
32000H AH 45H AL 67H 334EAH
存储器 ... ... ... 67H 45H ... 数 据 段
基址加变址寻址方式 MOV AX,[BX+SI]
相对基址加变址寻址方式
操作数有效地址是一个基址寄存器和一个变址寄存器的 内容和8位或16位位移量之和 。
(SI) EA= (BX) + + (DI)
操 作 码 位移量 COUNT
代 码 段
wenku.baidu.com
堆 栈 段
指令执行后:EA=5040H PA=55040H (55040H)=5548H (AX)=5548H
寄存器相对寻址方式 MOV AX,COUNT[BP]
基址加变址寻址方式
操作数的有效地址是一个基址寄存器和一个变址寄存器 的内容之和,基址寄存器名和变址寄存器名均有指令指 定。
存储器 OP OP 34H 12H ... 30000H ... 数 据 段 操 作 码
代 码 位移 段 量 MASK
AH 40H
AL 50H 32A7AH 50H 40H
相对基址加变址 MOV AX, MASK+[BX+DI]
与转移地址有关的寻址方式
段内转移只需改变 (IP) 段内转移包括两种寻址方式:直接 ,间接。 段间转移改变(CS)(IP) 段间转移包括两种寻址方式: 直接 ,间接。
例:MOV AX,[3100H]
DS 6000H 6 0 0 0 0 + 3 1 0 0 6 3 1 0 0 63100H AL 50H ... ... 操作码 00 31 ... 50H 30H 数 据 段 代 码 段
(DS)=6000H , (63100H)=3050H
则:(AX)=3050H 又如:用符号地址代替数值地址。 MOV AX,VALUE 或 MOV AX,[VALUE]
例:
存储器
MOV AX, COUNT [BP] 或MOV AX, [COUNT+BP] 或MOV AX, COUNT+[BP] COUNT为16位位移量。 指令执行前: (SS)=5000H, (BP)=3000H, COUNT=2040H, (AX)=1234H
OP AH 55H AL 48H OP 40H 20H ... 50000H 55040H ... 48H 55H ...
AL,AH,BL,BH,CL,CH,DL,DH。
这种寻址方式因为操作数在寄存器中,不需要访问 总线,执行速度较高。
例: 指令执行前:(AX)=3064H (SS)=1234H
MOV SS,AX
指令执行后: (SS)=3064H (AX)保持不变。
SS AX 3064H
指令执行前:
指令执行后:
1234H
(BX) (BP) EA = (SI) (DI) + 16位位移量 8位位移量
除有段跨越前缀之外,以BX、SI、DI为基地址时,数 据在数据段中,以BP为基地址时,数据在堆栈段中。
(BX) PA=16d ×(DS)+ (SI) (DI) + 16位位移量 8位位移量
8位位移量 PA=16d ×(SS)+ (BP) + 16位位移量
例: MOV AX, MASK[BX][DI] MOV AX, MASK [BX+DI] MOV AX,[MASX+BX+DI] 执行指令前: (DS)=3000H (BX)=1346H (DI)=0500H MASK=1234H (32A7AH)=4050H 执行指令后: EA=2A7AH PA=32A7AH (AX)=4050H
数据的寻址方式
立即寻址
操作数直接存放在指令中,紧跟在操作码之后,作为 指令的一部分,存放在代码段里,这种操作数称为立 即数 立即数可以是8位或16位的, 16位的立即数是高位字 节放在高地址,低位字节放在低地址。 使用场合:经常用于给寄存器赋初值 注意:只能用于源操作数字段,不能用于目的操作数 字段。
第四章
8086指令系统
§4.1 指令系统概述
§4.2 数据传送类指令
§4.3 算术运算类指令 §4.4 逻辑运算类指令 §4.5 字符串操作类指令 §4.6 程序控制类指令 §4.7 CPU控制指令
§4.1 8086的寻址方式
指令系统概念和指令组成
指令系统概念 计算机通过执行指令序列来解决问题,指令 系统是指微处理器所能完成的所有指令的 集合。 每种计算机都有自己的指令系统, 不同的微处理器,其指令系统中包含的具 体指令各不相同。 指令组成 计算机中指令由操作码字段和操作数字段 两部分组成。一条可以由1~7个字节组成。
+
6000H 6 0 2 6 2 BH 50H
(DI)=2000H
PA=62000H (62000H)=50A0H (BX)=50A0H
0 0 0 0 BL
...
AOH 50H
A0H
数 据 段
...
寄存器间接寻址方式 MOV BX,[DI]
SS
BP 3000H 0 0 0 ...
例: MOV [BP], AX 执行前: (SS)=1000H ,
(SI) EA= (BP) + + (DI) 16位位移量
8位位移量 16位位移量
8位位移量
除有段跨越前缀之外,形成物理地址有二种方式:
(SI) PA=16d×(DS)+ (BX) + (DI) + 16位位移量 8位位移量
(SI) PA=16d×(SS)+ (BP) + (DI) +
8位位移量 16位位移量
相关文档
最新文档