8086七种寻址方式

8086/8088七种寻址方式
(一)8086/8088寄存器组

(二)8086/8088寻址方式
(1)立即寻址方式
操作数就包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段。
这种操作数称为立即数,立即数可以是8位的也可以是16位的,如果立即数是
16位的按“高高低低”的原则。
例如指令: MOV AX,1234H
的存储和执行情况如下图:
图中指令存放在代码段中,OP表示该指令的操作码部分
再例如:MOV AL,5 则指令执行行,(AL)=05H
MOV BX,3064H 则指令执行后,(BX)=3064H

(2)寄存器寻址方式
操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数,寄存器可以是:
AX,BX,CX,DX,SI,DI,SP,和BP等:
对于8位数,寄存器可以是:
AL,AH,BL,BH,CL,CH,DL,DH。
这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因
而可以取得较高的运算速度。
例如:MOV AX,BX
如指令执行前(AX)=3064H,(BX)=1234H;则指令执行后,(AX)=1234H,(BX)
保持不变
例如:MOV SI,AX
MOV AL,DH

(3)直接寻址方式
操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)。操作数一
般存放在数据段
所以操作数的地址由DS加上指令中直接给出的16位偏移得到。
如果采用段超越前缀,则操作数也可含在数据段外的其他段中。
如下图所示:
在汇编语言指令中,可以用符叼地址代替数值地址。
如:MOV AX,VALUE
此时VALUE为存放操作数单元的符号地址。
如写成:MOV AX,[VALUE]
也是可以的,两者是相等的。
如VALUE在附加段中,则应指定段超越前缀如下:
MOV AX,ES:VALUE
或 MOV AX,ES:[VALUE]

直接寻址方式常用于处理单个存储器变量的情况。它可实现在64K字节的段内
寻找操作数。直接寻址的操作数通常是程序使用的变量。
注意立即寻址和直接寻址书写方法上的不同,直接寻址的地址要放在方括号中。
在源程序中,往往用变量名表示。

(4)寄存器间接寻址方式
操作数在存储器中,操作数有效地址在SI,DI,BX,BP这四个寄存器之一中,
在一般情况下,如果有效地址在SI,DI和BX中,则以DS段寄存器之内容为段
值。如果有效地址在BP中,则以SS段寄存器之内容为段值。
如下图所示:

指令中也可指定段超越前缀来取得其他段中的数据如:
MOV AX,ES:[BX];引用的段寄存器是ES
MOV [SI],AX;目的操作数寄存器间接寻址
MOV [BP],CX;引用的段寄存器是BP
MOV SI,AX;目的操作数寄存器寻址方式

(5)寄存器相对寻址方式
操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)或变址寄
存器的(SI,DI)内容加上指令中给定的8位或16位位移量之各。
即:

在一般情况下,如果SI,DI或BX之内容作为有效地址的一部分,那么引用的段
寄存器是DS;如果BP之内容作为有效地址的一部分,那么引用的段寄存是百
SS。
物理地址=16D*(DS)+(BX)+8
或(SI)或16位位移量
或(DI)
物理地址=16D*(SS)+(BP)+8位位移量
或16位位移量
在指令中给定的8位或16位位移量采用补码形式表示。在计算有效地址时,如
位移量是8位,则被带符号扩展成16位。
例如: MOV AX,[DI+1233H]
假设,(DS)=5000H,(DI)=3678H
则 物理地址=50000+3678+1223=5489BH (16位的段地址最后未位一定是0)
假设该字存储单元的内容如下图,则(AX)=55AAH
下面指令中,源操作数采用寄存器相对寻址,引用的段寄存器是SS:
MOV BX,[BP-4]
下面指令中,目的操作数采用寄存器相对寻址,引用的段寄存器是ES:
MOV ES:[BX+5],AL
指令:MOV AX,[SI+3]与MOV AX,3[SI]是等价的。

(6)基址加变址寻址方式
操作数在存储器中,操作数的有效地址由:基址寄存器之一的内容与变址寄存
器之一的内容相加。
(BX) (SI)
即:EA= +
(BP) (DI)
在一般情况下,如果BP之内容作为有效地址的一部分,则以SS之内容为段值,否则
以DS之内容为段值.
如下图所示:

下面指令中,目的操作数采用基址加变址寻址.
引用的段寄存器是DS: MOV DS:[BP+SI],AL
下面指令中,源操作数采用基址加变址寻址.
引用的段寄器ES: MOV AX,ES:[BX+SI]
这种寻址方式适用于数组或表格处理.
用基址寄存器存放数组首地址,而用变址寄存器来定位数组中的各元素.
或反之,由于两个寄存器都可改变,所以能更加灵活地访问数组或表格中的元素.
下面的两种表示方法是等价的:
MOV AX,[BX+DI]
MOV AX,[BX][DI]

(7)相对基址加变址寻址方式
操作数在存储器中,操作数的有效地址由基址寄存器之一的内容与变址寄存器之
一的内容及指令中给定的8位或16位位移量相加得到.
(BX) (SI) 8位位移量
即:EA= + +
(BP) (SI) 16位位移量
在一般情况下,如果BP之内容作为有效地址的一部分,则以SS段寄存器之内
空为段值。
在指令中给定的8位或16位位移量采用补码形式表示。
在计算有效地址时,如果位移量是8位,那么被带符号扩展成16位。
当所得的有效地址超过FFFFH时,就取其64的模。
假如: MOV AX,[BX+DI-2]
假设,(DS)=5000H,(BX)=1223H,(DI)=54H,(51275)=54H,(51276)=76H
那么,存取的物理存储单元是多少呢?
物理地址=50000+1233+0054+FFFE ;
(其中FFFE是-2的32位数值,通过正2各位取反未位加1而来)

=51275H
执行该指令后,(AX)=7654H。
相对基址加变址这种寻址方式的表示方法多种多样,下面四种均是等价的。
MOV AX,[BX+DI+1234H] MOV AX,123H[BX][DI]
MOV AX,1234H[BX+DI] MOV AX,1234H[DI][BX]

合集下载

第3章 8086的指令系统—3.1寻址方式

第3章 8086的指令系统—3.1寻址方式
EA=[基址寄存器]+([变址寄存器] *比例因子)+位移量 BX,BP SI,DI 1 0,8,16
例:(BX)=2000H,(SI)=1000H,偏移量=0250H,
则EA= 2000H+1000H+0250H=3250H
寻址目的
确定本条指令的操作数据 在指令中 PA:存储器内的绝对地址(20位) 在存储器中 EA:某个段内的相对地址(16位) 在寄存器中 确定下一条指令的地址 根据指令长度计算 根据转移指令的目标地址
寄存器名表示其内容(操作数)
MOV AX, BX
MOV AL, BH
;AX←BX
;AL←BH
演示
第3章: 3.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
演示
;AX←DS:[SI+06H]
第3章:4. 基址加变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
*微型计算机汇编语言特点 *微型计算机指令系统概述 *寻址方式
指令及其格式
指令及指令集 计算机能够识别和执行的基本操作命令
指令的作用
告诉CPU干什么?What? 告诉CPU从哪儿取数据?Where? 告诉CPU下一条指令在哪儿?Where? 操作码 操作数或操作数地址 指令的格式

[工学]第三章 8086的寻址方式和指令系统

[工学]第三章 8086的寻址方式和指令系统

19
3.2
8086指令系统的概况
3.2.1 指令格式 说明:① 指令系统规定一条指令只能包含1个或2个
操作数。涉及一个操作数的指令称为单操作数指令; 单操作数指令中的操作数可能由指令本身提供,也可 能用指令隐含指出。涉及2个操作数的称为双操作数 指令;双操作数指令中至少有1个操作数必须通过寄 存器指出,不允许2个操作数均在存储器中。
操作数就在 CPU 的内部寄存器 (AX、BX、CX、DX、DI、 SI、BP、SP)中,寄存器名由指令指出。 例: DEC BL ;将BL的内容减1 MOV DX,AX ;将AX中的值送入DX中 ROL AH,1 ;将AH中的内容循环左移一位 说明:①采用此寻址方式的指令在执行时,操作数就在 CPU 内部进行,不需要使用总线周期,指令执行速度快。 ②一条指令中可以对源操作数、也可对目的操作数、 还可两者都采用寄存器寻址方式。 7
3. 双操作数指令:
例:MOV
AX,[BX+2000H]
25
指令编码格式举例:
26
3.2.2 指令的执行时间
指令周期:是指计算机完成对一条指令从取指开始至 执行完毕所需要的时间叫指令周期。与时 钟周期长短和所需要的时钟数有关。 即包括:

一条指令基本执行时间加上计算有效地址所需要的时间。 计算有效地址所需要的时间由寻址方式决定。
0
OP
例如:HLT指令编码为:
7
0
11110100
F4H
22
2. 单操作数指令:
单操作数在寄存器中
格式一:
7
格式二:
000—AX 001—CX 010—DX 011—BX 100—SP 101—BP 110—SI 111—DI

第四章8086寻址方式及指令系统(wq)

第四章8086寻址方式及指令系统(wq)
能识别的目标代码的系统程序。如 MASM.EXE 。
1、 汇编语言
汇编语言是一种面向CPU指令系统的程序设计语言,它 采用指令系统的助记符来表示操作码和操作数,用符号地址 表示操作数地址,因而易记、易读、易修改,给编程带来很 大方便。
用汇编语言编写的程序能够直接利用硬件系统的特性,直 接对位、字节、字寄存器、存储单元、I/O 端口等进行处理, 同时也能直接使用CPU指令系统和指令系统提供的各种寻址 方式编制出高质量的程序,这种程序不但占用内存空间少, 而且执行速度快 。
B8H、C3H的助记符为MOV AX,BX 。 CPU不同,机器码不同,助记符也不同。
• 高级语言 语言规范,可移植。
4.1.3 汇编语言与汇编程序
• 汇编语言→汇编语言源程序 ✓ 用助记符表示机器码 ✓ 用符号地址表示存储器地址 ✓ 用伪指令管理源程序 汇编程序 将汇编语言源程序(简称源程序)编译为机器所
默认
段寄 DS
DS
存器
SS
SS DS ES CS
可加 的段 超越 前缀
ES: SS: CS:
ES: SS: CS:
DS:
ES:
ES:
— SS: —
—
CS:
CS:
固定 搭配 的寄 存器
SP SI
DI
IP
段超越前缀
段超越前缀形式为: 段寄存器名:
例如:
当操作数在内存单元时,系统根据隐含约定,自 动将寄存器DS或SS的值作为段地址。然而,当操作 数段地址不在隐含的段寄存器时,可以使用段超越前 缀取代其隐含约定。
其它等效写法: MOV [SI]10,AH MOV 10[SI],AH
寻址过程示意
变址寻址过程示意图

05第3章 8086寻址方式和指令系统1PPT课件

05第3章 8086寻址方式和指令系统1PPT课件

2020/10/30
11
指令中符号的判别(1)
• 直接寻址在汇编语言书写形式上类似立即数寻址,必 须从整个程序上下文分析中才能得出正确结论。
例如:
DSEG SEGMENT
DATANDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START: MOV AX, DSEG
AX AH AL
代码段
OP 64 30
操作码
操作数 (立即数)
2020/10/30
6
3.1.2 寄存器寻址方式
指令 寄存器号
寄存器 操作数
寄存器寻址方式示意图
• 操作数在寄存器中,指令指定寄存器号。对于16位操作数, 寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等; 对于8位操作数,寄存器可以是AH、AL、BH、BL、CH、 CL、DH和DL等。这种寻址方式操作数的示意如上图所示。
2020/10/30
3
3.1 8086的寻址方式
• 立即数寻址方式 • 寄存器寻址方式 • 直接寻址方式 • 寄存器间接寻址方式 • 寄存器相对寻址方式 • 基址变址寻址方式 • 相对基址变址寻址方式 • 其他
2020/10/30
4
3.1.1 立即数寻址方式
• 操作数直接存放在指令中,紧跟在操作码之后,它作 为指令的数字段存放在指令代码中,这种操作数称为 立即数。立即数可以是8位的或16位的。如果是16位立 即数,则低位字节数存放在低地址单元中,高位字节 数存放在高地址单元中。机器码存放形式如下所示:
微型计算机原理与接口技术 第5讲
电子邮件:gqz@
1
第3章 8086寻址方式和指令系统
• 本章介绍以下内容

8086指令格式和寻址方式

8086指令格式和寻址方式

物理地址=
CS DS SS × 10H + EA ES
第4章 80x86指令系统
寻找存储器操作数,必须经过总线控制逻辑电 路进行存取。当EU单元需要读/写位于存储器的操作 数时: ①根据寻址方式(指令中的B2字节),由EU计算 出操作数的偏移量,即有效地址EA; ②将EA送至BIU单元,同时请求BIU执行一个 总线周期; ③BIU将某个段寄存器的内容左移4位,在加上 EU送来的EA,形成20位的实际地址,即物理地址 PA; ④执行总线周期,读/写指令所需要的操作数。 计算EA的通式为:
第4章 80x86指令系统
由此可见,操作数可分为源操作数和目的操作
数。 源操作数:只能读取的操作数。 目的操作数:即可读取又可写入(存放操作结 果)的操作数。
操作数又可分为两大类:数据操作数和地址操 作数。
第4章 80x86指令系统
指令长度与字长的关系
指令的长度主要取决于指令操作码的长度、操作 数的长度和操作数的个数。通常指令字长位数越多, 所能表示的操作信息也就越多,指令功能就越丰富。 但位数多则指令所占的存储空间就多,读取指令的时 间就增加。 字长(一般是指CPU的机器字长)是指CUP一次能 够处理的二进制数位数,它都是字节长度(8位二进制 数)的1、2、4或8倍,也就是8、16、32或64位。因此, 指令字长也是字节的简单倍数,如一字节指令,二字 节指令、三字节指令……。
000000DW mod reg 000 r/m 001 Disp-L Disp-H
000000 1 1
0000 0011
10
00100110
0010 0110
00001000
0000 1000
1000 0001
03H

汇编语言2-1寻址方式

汇编语言2-1寻址方式

EA =
+
பைடு நூலகம்
注意: 允许段超越。 注意:①允许段超越。 ②[BX+BP]或[SI+DI]是非法搭配 或 是非法搭配
例: MOV AX, [BX] [SI] MOV AX, [BX+SI] MOV AX, DS: [BP] [DI] 错误例: 错误例: × MOV AX, [BX] [BP] × MOV AX, [DI] [SI]
指令操作例:MOV AX,DATA[DI][BX] 指令操作例: , 操作例 若DS=8000H, BX=2000H, DI=1000H, DATA=200H 则指令执行后AH=[83201H], AL=[83200H] 则指令执行后
目的 源
指令举例:
MOV AX , BX 操作码 操作数 ADD AX,[SI+6] INC HLT [BX]
二、8086的操作数分类
立即数(常数) 1、立即数(常数)
取值范围如下表: 取值范围如下表 8位 无符号数 00H-FFH(0-255)
带符号数80H-7FH(-128~127)
16位 0000H-FFFFH(0-65535)
存储器寻址方式
1、 立即寻址 、
直接把参与操作的数据写在指令中,是指令的一部分, 直接把参与操作的数据写在指令中,是指令的一部分,该数 据称为立即数。操作数可以是各种数制下的数值(相当于8位 据称为立即数。操作数可以是各种数制下的数值(相当于 位 位二进制数),也可以是带单引号的字符。 或16位二进制数),也可以是带单引号的字符。 位二进制数),也可以是带单引号的字符 强调: 强调:立即寻址只能用于源操作数 例如: 2050H,执行后, 执行后, 例如: MOV AX,2050H ; AX , 执行后 MOV AL,05H , ;AH = 20H,AL = 50H , MOV AL,‘A’ , 观察指令: 观察指令: MOV 05H,AL MOV BL,324D , , MOV CH,2050H MOV DL,‘25’ , , 注意: 立即数永远不能作目的操作数。 注意:1. 立即数永远不能作目的操作数。 2. 源操作数和目的操作数要互相匹配。 源操作数和目的操作数要互相匹配。

数据的7种寻址方式

第3章数据的7种寻址方式,包括指令的格式,功能,指令的正误判断。

20位物理地址的生成:将段地址添上一个0(十六进制),再加上偏移地址。

数据传送指令:MOV PUSH,POP,XCHG,LEA,IN,OUT1、MOV ,注意指令的正误判断,可从3点入手。

(1)指令格式(2)数据大小是否超出范围(3)类型是否匹配。

通常,不能在两个内存单元间直接传送,段寄存器间不能直接传送,立即数不能直接传送到段寄存器,不能用CS作目的操作数。

2、PUSH 入栈指令,先减后压。

不能对字节进行压栈操作。

3、POP 出栈指令,先弹后加,将栈顶的一个字弹出到目的操作数。

4、EXCHG 交换指令。

不能在两个内存单元间直接交换。

5、LEA 取有效地址指令。

6、IN 输入指令,当端口大于255时,要用DX来表示端口号。

7、OUT 输出指令,当端口大于255时,要用DX来表示端口号算术运算等指令1、ADD AL,[1000H]例:AL=85H,BL=79H,执行指令ADD AL,BLAL= 0FEH ,CF= 0 ,OF= 02、SUB AL,BL3、INC [1000H] ERRORINC BYTE PTR [1000H]INC WORD PTR [1000H]该指令不影响CF标志4、DEC [1000H] ERRORDEC BX5、NEG AL 求相反数例:Y=X,X>=0; Y=|X|,X<0,编写程序段实现该功能MOV AL,XCMP AL,0JGE Y1NEG ALY1:MOV Y,ALHLT编程序的思路:取数据,在CPU里做运算,存数据;如果数据较多,通常要设指针,再取数据,取完数据后,修改地址指针,又取下一个数据,循环下去。

6、CMP AL,BL无符号数,A表示大,B表示小,E表示相等。

有符号数,G表示大,L表示小,E表示相等。

例:CMP AX,BXJGE NEXTXCHG AX,BXNEXT: CMP AX,CXJGE DONEXCHG AX,CXDONE:该程序段的功能是找AX,BX,CX中最大的数,并把最大的数放在AX中。

第3章 8086 8088指令系统和寻址方式



第3章 指令系统和寻址方式
3.1 概述 3.2 数据寻址方式 3.3指令格式及指令执行时间 3.4 8088/8086 CPU的指令系统
3.1 指令系统概述
指令是计算机能够识别和执行的指挥计算机进行操作的命
令。指令系统是指微处理器能执行的各种指令的集合。
程序是指令的有序集合,指令是程序的组成元素,通常一
演示
3.2 数据寻址方式
2. 寄存器间接寻址方式
在计算机中通常将BX、BP称为基址寄存器,SI、DI称为
变址寄存器,寻址时操作数的地址被放在这些寄存器中。
寄存器间接寻址方式在汇编格式中表示为
[基址寄存器名或变址寄存器名]
【例】
MOV AX, [BX]
;AX←DS:[BX]
演示
3.2 数据寻址方式
直接寻址方式是指寻找的操作数的地址在指令中直接给出。 这种寻址方式在汇编格式中表示为 ● 操作码 地址表达式 (或[地址表达式]) ● 操作码 [数字表达式]
3.2 数据寻址方式
【例】
MOV AX, [2000H];AX←DS:[2000H] MOV AX, ES: [2000H] ;AX←ES:[2000H]
MOV AX, 0102H
;AX←0102H
演示
3.2 数据寻址方式
3.2.2 寄存器寻址方式
寄存器寻址是指寻找的操作数在某个寄存器中。 格式: 操作码 寄存器名
比如AL,BX,CX,DS、IP等等。 【例】
MOV AX, BX
;AX←BX
演示
3.2 数据寻址方式
3.2.3 存储器寻址方式
1. 直接寻址方式

若(CS)=5200H 时,物理转移地址为 B230H,则当CS 的内容被设定为7800H, 物理转移地址应为多少? =9230H 78000H +9230H=81230H。

8086 微机 寻址方式

例3-1 MOV AX,2004H MOV BL, 5AH MOV EAX,22334455H
;(AH)=20H,(AL)=04H ;(BL)=5AH ;(EAX)=22334455H, (AX)=4455H
立即数常用于给寄存器赋初值,只能作源操作数,不能作 目的操作数
2 寄存器寻址
** **
出栈方向
高地址
POP BX 执行前
高地址
POP BX 执行后
(BX) = 2107H
注意:进栈和出栈的指令顺序!顺序不同,结果不同! 例: PUSH AX
PUSH BX … … POP BX POP AX
例: PUSH AX
例:
PUSH [BX+DI]
5 寄存器相对寻址
操作数的有效地址是一个基址寄存器或变址寄存器中存放的数据加上 指令给出的8位或16位偏移量,其物理地址为:
(DS)×16+(SI/DI/BX)+8位或16位偏移量 或 (SS)×16+(BP)+8位或16 位偏移量 例3-7 假定(DS)=2000H,(SS)=3000H,(SI)=3600H,(BP)=1100H, COUNT=10H,(23620H)=8A76H,(31110H)=4567H MOV AX ,[SI+20H] MOV BX ,[BP+COUNT]
MOV [2000H], DS 则 PA=22000H
二义性/定义不明
[22000H]=00H
[22001H]=20H
例: MOV AX, DATA_SEG MOV DS, AX 例: MOV AL, ‘E’ 或 MOV AL, 45H 例: MOV BX, OFFSET TABLE 例: MOV AX, Y[BP][SI]

8086-8088 CPU的寻址方式

3. 段间直接转移寻址 指令直接提供了转移目标段地址和偏移地址 例:JMP FAR PTR NEXT NEXT是符号地址,它所在的段地址送CS寄存 器,所在的偏移地址送IP寄存器 4.段间间接转移寻址 用存储器中二个连续字内容取代IP和CS寄存器 中的原始内容以达到段间转移的目的 例3.12:JMP DWORD PTR [BP][SI]
MOV AX,ES:[VALUE]
微机原理
1.3 寄存器寻址方式 寄存器寻址:操作数存放在CPU内部的寄存器中 例 :MOV AX,DX ; AX←DX 1.4 寄存器间接寻址 寄存器间接寻址:有效地址包含在基址寄存器 BX、BP或变址寄存器SI、DI中直接寻址 例 MOV AX,[BX]
MOV AX,[BP] 1.5 寄存器相对寻址 寄存器相对寻址方式:有效地址在SI、DI、BX 或BP之一,加上指令中8位或16位相对地址 例 MOV AL,ADDR[SI]
微机原理
1.6 转移类指令的寻址方式 1.段内相对转移寻址 有效地址EA为当前IP寄存器内容与指令中指定 的8位或16位有符号数之和 例:JZ DISP 其中DISP是符号地址 2.段内间接转移寻址 有效地址EA为寄存器或存储器单元的内容,这 种寻址方式不能用于条件转移指令。 例:JMP CX
微机原理
微机原理
1.6 基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容 和一个变址寄存器的内容之和 基址寄存器:BX、BP 变址寄存器:SI 、DI
MOV AX,[BX] [DI] 也可写成 MOV AX,[BX+DI] 1.7 相对基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容、 一个变址寄存器的内容和一个8位或16位的位移 量之和。 MOV AX,ADDR[BP+SI]
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档