2012 第4章 8086寻址方式与指令系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储器 00000H DS 2000H × 10H
~
BX 2008H 8 22010H AH AX 12H AL 25H 22010H 操作码 +
~
代码段
~
25H 12H
~
数据段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
寄存器相对寻址说明
偏移量是符号数,8位偏移量的取值范围为:00 ~0FFH(即+127D~-128D); 16位偏移量的取值范围为:0000~0FFFFH(即 +32767D~-32768D)。 8086汇编允许用下面三种形式表示相对寻址,它 们是等效的。 MOV AX,[BX]+8 MOV AX,8[BX] MOV AX,[BX+8]
第4章 8086寻址方式与指令系统
4.2.2 寄存器寻址
操作数在寄存器中,在指令中指定寄存器号。 操作数在寄存器中,指令执行时,操作就在 CPU的内部进行,不需要通过访问存储器来取 得操作数,因而指令的执行速度快。 在编程中,如有可能,应尽量在指令中使用这 种寻址方式。 例如: MOV AX,2010H
第4章 8086寻址方式与指令系统
例如: MOV AX,8[BX] 或 MOV AX,[BX+8] 或 MOV AX,[BX]+8 该指令的源操作数采用寄存器相对寻址方式。 若 DS=2000H,BX=2008H,那么指令执行后, AX=?
第4章 8086寻址方式与指令系统
寄存器相对寻址方式的指令执行示意图
第4章 8086寻址方式与指令系统
寄存器寻址方式可用的寄存器
对于16位操作数,寄存器可以是:
AX,BX,CX,DX SI,DI,SP,BP CS,DS,SS和ES
对8位操作数,寄存器可以是:
AH,AL BH,BL CH,CL DH,DL
第4章 8086寻址方式与指令系统
4.3 8086指令系统
8086指令系统包括六大类指令: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令
控制转移指令
处理器控制指令
第4章 8086寻址方式与指令系统
8086汇编指令中的操作数可以有零个、一个或两 个,通常称为零地址、一地址或二地址指令。 二地址指令中的两个操作数分别称为源操作数和
除了POPF和SAHF指令外,其他的数据传送指令的 执行结果都不影响标志位。 指令中如果列出两个操作数,则指令的执行过程 是:目的操作数←源操作数。
指令中如果仅列出一个操作数,则另一个操作数
为隐含操作数。
第4章 8086寻址方式与指令系统
1.通用数据传送指令
1)传送指令
格式:MOV 目的操作数,源操作数
操作码和操作数地址都由二进制数码表示,整条 指令以二进制编码的形式存放在存储器中。
第4章 8086寻址方式与指令系统
指令系统与寻址方式的重要性
采用不同CPU的计算机的指令系统不同。 采用不同CPU的计算机的指令的格式不同。 采用不同CPU的计算机的各指令允许的寻址方式 不同。 要使用某种微处理器,必须先要掌握其指令系统 和寻址方式。
操作数的有效地址EA是指令中指定的基址或变址 寄存器的值与位移量之和。 指令中使用SI、DI、BX寄存器时,操作数默认存 放在数据段中;使用BP寄存器时,操作数默认存 放在堆栈段中,允许段超越。 操作数的物理地址 =DS×10H+SI/DI/BX+8位或16位位移量 或 =SS×10H+BP+8位或16位位移量
第4章 8086寻址方式与指令系统
4.2.4 寄存器间接寻址
操作数的有效地址EA存放在基址寄存器BX、BP或 变址寄存器SI、DI中。 为了区别于寄存器寻址方式,指令中指定的寄存 器名要用[]括起来。 指令中使用SI、DI、BX寄存器时,操作数默认存 放在数据段中;使用BP寄存器时,操作数默认存 放在堆栈段中,允许段超越。 操作数的物理地址=DS×10H + SI/DI/BX 或 SS×10H+BP
寄存器寻址方式指令执行示意图
存储器 00000H
AH AX 20H
AL 10H
~
操作码 10H 20H
~
代码段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
寄存器寻址方式说明
在一条指令中,寄存器寻址方式既可用于源操作 数,也可用于目的操作数,还可以两者都用寄存 器寻址方式。 源操作数与目的操作数的长度应一致。例如,不 能将寄存器AX的内容传送到寄存器BH中,也不能 将寄存器BH的内容传送到寄存器AX中。 两个操作数不能同时为段寄存器。 目的操作数不能是代码段寄存器。
第4章 8086寻址方式与指令系统
4.2 8086寻址方式
寻址方式:
指令中给出的求出操作数有效地址的方法。
寻址操作:
计算机按照指令给出的寻址方式求出操作数有效地址 的过程。
第4章 8086寻址方式与指令系统
808的七种基本的数据寻址方式
(1)立即寻址; (2)寄存器寻址; (3)直接寻址; (4)寄存器间接寻址; (5)寄存器相对寻址; (6)基址加变址寻址; (7)相对基址加变址寻址。
第4章 8086寻址方式与指令系统
4.2.6基址加变址寻址
操作数的有效地址EA是指令中指定的基址寄 存器的值与变址寄存器的值之和。 指令中使用基址寄存器BX时,操作数默认存 放在数据段中; 使用基址寄存器BP时,操作数默认存放在堆 栈段中,允许段超越。 操作数的物理地址 =DS×10H+SI/DI+BX 或 =SS×10H+SI/DI+BP
第4章 8086寻址方式与指令系统
相对基址变址寻址方式的指令执行示意图
DS 2000H × 10H 00000H BX SI + 2008H 5H 操作码 3H 22010H AH AX 12H AL 25H 22010H 代码段 存储器
~
~
~
25H 12H
~
数据段
~
~
FFFFFH 第4章 8086寻址方式与指令系统
立即寻址方式的指令执行示意图
存储器 00000H
AH AX 20H
AL 10H
~
操作码 10H 20H
~
代码段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
立即寻址方式说明
在所有的指令中,立即数只能作源操作数,不能作 目的操作数。 立即数应与目的操作数的长度一致。 立即数默认采用十进制形式,以十六进制形式出现 的立即数应以字母H为后缀,以八进制形式出现的立 即数应以字母Q为后缀。 以十六进制形式出现的立即数,若以字母开头,则 必须以数字0为前缀。 立即数还可以用表示+、-、×、/表示的算术表达式 ,也可以用圆括号改变运算顺序。 立即数只能是整数,不能是小数、变量或其它类型 的数据。
第4章 8086寻址方式与指令系统
直接寻址方式指令执行示意图
存储器 00000H
~
DS + 2000H × 10H 2010H 22010H AH AX 12H AL 25H 22010H 操作码 10H 20H
~
代码段
~
25H 12H
~
数据段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
采用直接寻址方式时,如果指令中没有用前缀说 明操作数存放在哪个段,则操作数默认存放在数 据段。 8086系统也允许操作数存放在代码段、堆栈段或 附加段。此时,就需要在指令中指明段超越。 例如: MOV ES:[1225H],AX
目的操作数。
第4章 8086寻址方式与指令系统
4.3.1数据传送指令
数据传送指令是将数据或地址传送到寄存器、
存储单元或I/O端口中。
分为5类: 通用数据传送指令; 累加器专用传送指令; 地址传送指令; 标志传送指令; 数据类型转换指令。
第4章 8086寻址方式与指令系统
数据传送指令的共同特点
=DS×10H+SI/DI+BX+8位或16位位移量
或
=SS×10H+SI/DI+BP+8位或16位位移量
第4章 8086寻址方式与指令系统
例如: MOV AX,[BX+SI+3]
该指令的源操作数采用寄存器相对寻址方式。 若DS=2000H,BX=2008H,SI=0005H,那么指令
执行后,AX=?
第4章 8086寻址方式与指令系统
寄存器间接寻址方式指令执行示意图
存储器 00000H DS
2000H
× 10H
~
操作码
~
代码段
+ SI
2010H 22010H AH AL 25H 22010H
AX
12H
~
25H 12H
~
数据段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
4.2.5 寄存器相对寻址
第4章 8086寻址方式与指令系统
4.2.4 直接寻址
操作数在存储器中,指令中以具体数值的形式直 接给出操作数所在存储单元的有效地址EA。为了 与立即数区别,该有效地址必须用[]括起。 例如: MOV AX,[2010H]
该指令的源操作数采用直接寻址方式。 若 DS=2000H,那么指令执行后,AX = ?
功能:将源操作数的内容(一个字或一个字节) 传送到目的操作数指定的寄存器或内存单元,源 操作数内容不变。例如: MOV MOV MOV AL,5;字节传送,立即数送通用寄存器 AX,BX;字传送,通用寄存器送通用寄存器 DS,AX ;字传送,通用寄存器送段寄存器 第4章 8086寻址方式与指令系统
第4章 8086寻址方式与指令系统
通常一条指令包括两部分:
操作码:决定要完成的操作 操作数:指参加运算的数据或是该数所在的内存单元 的地址。
指令的一般格式如下: 操作码 [操作数1,操作数2,„„,操作数n]
没有操作数的指令称为无操作数指令。 有两个操作数的指令称为双操作数或二地址指令。
第4章 8086寻址方式与指令系统
例如: MOV AX,[BX+SI] [SI] 或 MOV AX,[BX] [SI] 该指令的源操作数采用基址变址寻址方式。 若DS=2000H,BX=2008H,SI=8H,那么指令执行 后,AX=?
第4章 8086寻址方式与指令系统
基址变址寻址方式的指令执行示意图
第4章 8086寻址方式与指令系统
本章主要内容
1 概述 8086寻址方式 8086指令系统
2 3
第4章 8086寻址方式与指令系统
4.1 概述
指令是指挥计算机进行操作的命令。 指令系统是指微处理器能执行的各种指令的 集合。 程序是一系列按一定顺序排列的指令。 执行程序的过程就是计算机的工作过程。 微处理器的主要功能由它的指令系统来体现。 不同的微处理器有不同的指令系统,其中每 一条指令对应着处理器的一种基本操作,这 在设计微处理器时确定。
该指令的目的操作数采用直接寻址方式。操作数存放 在由ES指示的附加段中。 物理地址=ES×10H+1225H。
第4章 8086寻址方式与指令系统
在汇编语言指令中,可以用符号地址代替数值地 址。 例如: MOV AX,NUMA
此时,NUMA是存放操作数的内存单元的符号地址。
上面这条指令还可以写成如下的形式: MOV AX,[NUMA] 如果数据存放在附加段,则可以用如下的形式指 定段跨越前缀: MOV AX,ES: NUMA或 MOV AX,ES:[ NUMA]
存 储 器 寻 址 方 式
第4章 8086寻址方式与指令系统
4.2.1 立即寻址
操作数直接出现在指令中,此时的操作 数也叫立即数。 立即数紧跟在操作码后面,一起存放在 代码段中。 例如:
MOV AX,2010H 在该指令格式中,AX是目的操作数,2010H 是源操作数。
第4章 8086寻址方式与指令系统
第4章 8086寻址方式与指令系统
例如: MOV AX,[SI] 该指令的源操作数采用寄存器间接寻址方式。 若DS=2000H,SI=2010H,那么指令执行后, AX=? 如操作数不存放在间址寄存器默认的段,则指 定段超越的指令可采用如下形式。 MOV AX,ES:[SI] 此时,操作数的物理地址=ES×10H+SI。
存储器 DS 2000H × 10H 00000H
BX SI +
2008H 8H
~
操作码
~
代码段
22010H AH AH 12H
~
数据段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
4.2.7 相对基址变址寻址
操作数的有效地址EA是指令中指定的基址寄存器 的值与变址寄存器的值以及8位或16位位移量之 和。 指令中使用基址寄存器BX时,操作数默认存放在 数据段中; 使用基址寄存器BP时,操作数默认存放在堆栈段 中,允许段超越。 操作数的物理地址
~
BX 2008H 8 22010H AH AX 12H AL 25H 22010H 操作码 +
~
代码段
~
25H 12H
~
数据段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
寄存器相对寻址说明
偏移量是符号数,8位偏移量的取值范围为:00 ~0FFH(即+127D~-128D); 16位偏移量的取值范围为:0000~0FFFFH(即 +32767D~-32768D)。 8086汇编允许用下面三种形式表示相对寻址,它 们是等效的。 MOV AX,[BX]+8 MOV AX,8[BX] MOV AX,[BX+8]
第4章 8086寻址方式与指令系统
4.2.2 寄存器寻址
操作数在寄存器中,在指令中指定寄存器号。 操作数在寄存器中,指令执行时,操作就在 CPU的内部进行,不需要通过访问存储器来取 得操作数,因而指令的执行速度快。 在编程中,如有可能,应尽量在指令中使用这 种寻址方式。 例如: MOV AX,2010H
第4章 8086寻址方式与指令系统
例如: MOV AX,8[BX] 或 MOV AX,[BX+8] 或 MOV AX,[BX]+8 该指令的源操作数采用寄存器相对寻址方式。 若 DS=2000H,BX=2008H,那么指令执行后, AX=?
第4章 8086寻址方式与指令系统
寄存器相对寻址方式的指令执行示意图
第4章 8086寻址方式与指令系统
寄存器寻址方式可用的寄存器
对于16位操作数,寄存器可以是:
AX,BX,CX,DX SI,DI,SP,BP CS,DS,SS和ES
对8位操作数,寄存器可以是:
AH,AL BH,BL CH,CL DH,DL
第4章 8086寻址方式与指令系统
4.3 8086指令系统
8086指令系统包括六大类指令: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令
控制转移指令
处理器控制指令
第4章 8086寻址方式与指令系统
8086汇编指令中的操作数可以有零个、一个或两 个,通常称为零地址、一地址或二地址指令。 二地址指令中的两个操作数分别称为源操作数和
除了POPF和SAHF指令外,其他的数据传送指令的 执行结果都不影响标志位。 指令中如果列出两个操作数,则指令的执行过程 是:目的操作数←源操作数。
指令中如果仅列出一个操作数,则另一个操作数
为隐含操作数。
第4章 8086寻址方式与指令系统
1.通用数据传送指令
1)传送指令
格式:MOV 目的操作数,源操作数
操作码和操作数地址都由二进制数码表示,整条 指令以二进制编码的形式存放在存储器中。
第4章 8086寻址方式与指令系统
指令系统与寻址方式的重要性
采用不同CPU的计算机的指令系统不同。 采用不同CPU的计算机的指令的格式不同。 采用不同CPU的计算机的各指令允许的寻址方式 不同。 要使用某种微处理器,必须先要掌握其指令系统 和寻址方式。
操作数的有效地址EA是指令中指定的基址或变址 寄存器的值与位移量之和。 指令中使用SI、DI、BX寄存器时,操作数默认存 放在数据段中;使用BP寄存器时,操作数默认存 放在堆栈段中,允许段超越。 操作数的物理地址 =DS×10H+SI/DI/BX+8位或16位位移量 或 =SS×10H+BP+8位或16位位移量
第4章 8086寻址方式与指令系统
4.2.4 寄存器间接寻址
操作数的有效地址EA存放在基址寄存器BX、BP或 变址寄存器SI、DI中。 为了区别于寄存器寻址方式,指令中指定的寄存 器名要用[]括起来。 指令中使用SI、DI、BX寄存器时,操作数默认存 放在数据段中;使用BP寄存器时,操作数默认存 放在堆栈段中,允许段超越。 操作数的物理地址=DS×10H + SI/DI/BX 或 SS×10H+BP
寄存器寻址方式指令执行示意图
存储器 00000H
AH AX 20H
AL 10H
~
操作码 10H 20H
~
代码段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
寄存器寻址方式说明
在一条指令中,寄存器寻址方式既可用于源操作 数,也可用于目的操作数,还可以两者都用寄存 器寻址方式。 源操作数与目的操作数的长度应一致。例如,不 能将寄存器AX的内容传送到寄存器BH中,也不能 将寄存器BH的内容传送到寄存器AX中。 两个操作数不能同时为段寄存器。 目的操作数不能是代码段寄存器。
第4章 8086寻址方式与指令系统
4.2 8086寻址方式
寻址方式:
指令中给出的求出操作数有效地址的方法。
寻址操作:
计算机按照指令给出的寻址方式求出操作数有效地址 的过程。
第4章 8086寻址方式与指令系统
808的七种基本的数据寻址方式
(1)立即寻址; (2)寄存器寻址; (3)直接寻址; (4)寄存器间接寻址; (5)寄存器相对寻址; (6)基址加变址寻址; (7)相对基址加变址寻址。
第4章 8086寻址方式与指令系统
4.2.6基址加变址寻址
操作数的有效地址EA是指令中指定的基址寄 存器的值与变址寄存器的值之和。 指令中使用基址寄存器BX时,操作数默认存 放在数据段中; 使用基址寄存器BP时,操作数默认存放在堆 栈段中,允许段超越。 操作数的物理地址 =DS×10H+SI/DI+BX 或 =SS×10H+SI/DI+BP
第4章 8086寻址方式与指令系统
相对基址变址寻址方式的指令执行示意图
DS 2000H × 10H 00000H BX SI + 2008H 5H 操作码 3H 22010H AH AX 12H AL 25H 22010H 代码段 存储器
~
~
~
25H 12H
~
数据段
~
~
FFFFFH 第4章 8086寻址方式与指令系统
立即寻址方式的指令执行示意图
存储器 00000H
AH AX 20H
AL 10H
~
操作码 10H 20H
~
代码段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
立即寻址方式说明
在所有的指令中,立即数只能作源操作数,不能作 目的操作数。 立即数应与目的操作数的长度一致。 立即数默认采用十进制形式,以十六进制形式出现 的立即数应以字母H为后缀,以八进制形式出现的立 即数应以字母Q为后缀。 以十六进制形式出现的立即数,若以字母开头,则 必须以数字0为前缀。 立即数还可以用表示+、-、×、/表示的算术表达式 ,也可以用圆括号改变运算顺序。 立即数只能是整数,不能是小数、变量或其它类型 的数据。
第4章 8086寻址方式与指令系统
直接寻址方式指令执行示意图
存储器 00000H
~
DS + 2000H × 10H 2010H 22010H AH AX 12H AL 25H 22010H 操作码 10H 20H
~
代码段
~
25H 12H
~
数据段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
采用直接寻址方式时,如果指令中没有用前缀说 明操作数存放在哪个段,则操作数默认存放在数 据段。 8086系统也允许操作数存放在代码段、堆栈段或 附加段。此时,就需要在指令中指明段超越。 例如: MOV ES:[1225H],AX
目的操作数。
第4章 8086寻址方式与指令系统
4.3.1数据传送指令
数据传送指令是将数据或地址传送到寄存器、
存储单元或I/O端口中。
分为5类: 通用数据传送指令; 累加器专用传送指令; 地址传送指令; 标志传送指令; 数据类型转换指令。
第4章 8086寻址方式与指令系统
数据传送指令的共同特点
=DS×10H+SI/DI+BX+8位或16位位移量
或
=SS×10H+SI/DI+BP+8位或16位位移量
第4章 8086寻址方式与指令系统
例如: MOV AX,[BX+SI+3]
该指令的源操作数采用寄存器相对寻址方式。 若DS=2000H,BX=2008H,SI=0005H,那么指令
执行后,AX=?
第4章 8086寻址方式与指令系统
寄存器间接寻址方式指令执行示意图
存储器 00000H DS
2000H
× 10H
~
操作码
~
代码段
+ SI
2010H 22010H AH AL 25H 22010H
AX
12H
~
25H 12H
~
数据段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
4.2.5 寄存器相对寻址
第4章 8086寻址方式与指令系统
4.2.4 直接寻址
操作数在存储器中,指令中以具体数值的形式直 接给出操作数所在存储单元的有效地址EA。为了 与立即数区别,该有效地址必须用[]括起。 例如: MOV AX,[2010H]
该指令的源操作数采用直接寻址方式。 若 DS=2000H,那么指令执行后,AX = ?
功能:将源操作数的内容(一个字或一个字节) 传送到目的操作数指定的寄存器或内存单元,源 操作数内容不变。例如: MOV MOV MOV AL,5;字节传送,立即数送通用寄存器 AX,BX;字传送,通用寄存器送通用寄存器 DS,AX ;字传送,通用寄存器送段寄存器 第4章 8086寻址方式与指令系统
第4章 8086寻址方式与指令系统
通常一条指令包括两部分:
操作码:决定要完成的操作 操作数:指参加运算的数据或是该数所在的内存单元 的地址。
指令的一般格式如下: 操作码 [操作数1,操作数2,„„,操作数n]
没有操作数的指令称为无操作数指令。 有两个操作数的指令称为双操作数或二地址指令。
第4章 8086寻址方式与指令系统
例如: MOV AX,[BX+SI] [SI] 或 MOV AX,[BX] [SI] 该指令的源操作数采用基址变址寻址方式。 若DS=2000H,BX=2008H,SI=8H,那么指令执行 后,AX=?
第4章 8086寻址方式与指令系统
基址变址寻址方式的指令执行示意图
第4章 8086寻址方式与指令系统
本章主要内容
1 概述 8086寻址方式 8086指令系统
2 3
第4章 8086寻址方式与指令系统
4.1 概述
指令是指挥计算机进行操作的命令。 指令系统是指微处理器能执行的各种指令的 集合。 程序是一系列按一定顺序排列的指令。 执行程序的过程就是计算机的工作过程。 微处理器的主要功能由它的指令系统来体现。 不同的微处理器有不同的指令系统,其中每 一条指令对应着处理器的一种基本操作,这 在设计微处理器时确定。
该指令的目的操作数采用直接寻址方式。操作数存放 在由ES指示的附加段中。 物理地址=ES×10H+1225H。
第4章 8086寻址方式与指令系统
在汇编语言指令中,可以用符号地址代替数值地 址。 例如: MOV AX,NUMA
此时,NUMA是存放操作数的内存单元的符号地址。
上面这条指令还可以写成如下的形式: MOV AX,[NUMA] 如果数据存放在附加段,则可以用如下的形式指 定段跨越前缀: MOV AX,ES: NUMA或 MOV AX,ES:[ NUMA]
存 储 器 寻 址 方 式
第4章 8086寻址方式与指令系统
4.2.1 立即寻址
操作数直接出现在指令中,此时的操作 数也叫立即数。 立即数紧跟在操作码后面,一起存放在 代码段中。 例如:
MOV AX,2010H 在该指令格式中,AX是目的操作数,2010H 是源操作数。
第4章 8086寻址方式与指令系统
第4章 8086寻址方式与指令系统
例如: MOV AX,[SI] 该指令的源操作数采用寄存器间接寻址方式。 若DS=2000H,SI=2010H,那么指令执行后, AX=? 如操作数不存放在间址寄存器默认的段,则指 定段超越的指令可采用如下形式。 MOV AX,ES:[SI] 此时,操作数的物理地址=ES×10H+SI。
存储器 DS 2000H × 10H 00000H
BX SI +
2008H 8H
~
操作码
~
代码段
22010H AH AH 12H
~
数据段
~
FFFFFH
~
第4章 8086寻址方式与指令系统
4.2.7 相对基址变址寻址
操作数的有效地址EA是指令中指定的基址寄存器 的值与变址寄存器的值以及8位或16位位移量之 和。 指令中使用基址寄存器BX时,操作数默认存放在 数据段中; 使用基址寄存器BP时,操作数默认存放在堆栈段 中,允许段超越。 操作数的物理地址