第3章-1+8086寻址方式NEW_第1页
第3章-1+8086寻址方式NEW_第2页
第3章-1+8086寻址方式NEW_第3页
第3章-1+8086寻址方式NEW_第4页
第3章-1+8086寻址方式NEW_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与接口技术微机原理与接口技术 朱华贵朱华贵2016年年03月月14日日微机原理与接口技术微机原理与接口技术第第3 3章章 80868086寻址方式与指令系寻址方式与指令系统统 朱华贵朱华贵2016年年03月月14日日微机原理与接口技术微机原理与接口技术3.1 3.1 寻址方式寻址方式 朱华贵朱华贵2016年年03月月14日日微机原理与接口技术微机原理与接口技术3.1 概述概述n指令指令是指挥计算机进行操作的命令。是指挥计算机进行操作的命令。n指令系统指令系统是指微处理器能执行的各种指令的集是指微处理器能执行的各种指令的集合。合。n程序程序是一系列按一定顺序排列的指令是一系列按一定顺序排

2、列的指令。n执行程序的过程就是计算机的执行程序的过程就是计算机的工作过程工作过程。n微处理器的主要功能微处理器的主要功能由它的指令系统来体现由它的指令系统来体现。n不同的微处理器有不同的指令系统,其中每一不同的微处理器有不同的指令系统,其中每一条指令对应着处理器的一种基本操作,这在设条指令对应着处理器的一种基本操作,这在设计微处理器时确定。计微处理器时确定。n通常一条指令包括两部分:通常一条指令包括两部分:u操作码操作码:决定要完成的操作决定要完成的操作u操作数操作数:指参加运算的数据或是指参加运算的数据或是该该数所在的内存单数所在的内存单元元的的地址。地址。n指令的一般格式指令的一般格式如下

3、如下: 操作码操作码 操作数操作数1,操作数,操作数2,操作数,操作数nu没有操作数的指令称为无操作数指令。没有操作数的指令称为无操作数指令。u有两个操作数的指令称为双操作数或二地址指令。有两个操作数的指令称为双操作数或二地址指令。u操作码和操作数地址都由二进制数码表示,操作码和操作数地址都由二进制数码表示,整条指令以二进制编码的形式存放在存储器整条指令以二进制编码的形式存放在存储器中。中。指令格式指令格式操作数来源操作数来源n指明操作数所在的地方。指明操作数所在的地方。n操作数有三种来源:操作数有三种来源:n1、操作数在指令中,称、操作数在指令中,称立即数操作数立即数操作数;u如:如:MOV

4、 AL,9n2、操作数在寄存器中,称、操作数在寄存器中,称寄存器操作数寄存器操作数;u如:如:MOV AL,9n3、操作数在内存单元中,称、操作数在内存单元中,称存储器操作数存储器操作数或内存操或内存操作数。用作数。用 表示存储器操作数。表示存储器操作数。u如:如:MOV AL,2000H指令操作数类型指令操作数类型n指令应指明参与操作的数字节还是字,即指令应指明参与操作的数字节还是字,即操作数的类型。操作数的类型。n1、指令中有寄存器操作数、指令中有寄存器操作数,由寄存器操作数决定操作数类型;由寄存器操作数决定操作数类型;n例例: MOV BX,AL;字节操作字节操作 BX ALn MOV

5、BX,AX;字操作字操作 BX AL,BX+1 AHn在在DEBUG下查看指令代码下查看指令代码nD:DEBUGn-An13A0:0100 MOV BX,ALn13A0:0102 MOV BX,ALn13A0:0104n-U 100n13A0:0100 8807 MOV BX,ALn13A0:0102 8907 MOV BX,AXnn两条指令的机器码是不同的:两条指令的机器码是不同的:0788H,0789Hn2、指令操作数中无寄存器,则有内存操作数的类型、指令操作数中无寄存器,则有内存操作数的类型决定;若无则需对存储器操作数加类型说明。决定;若无则需对存储器操作数加类型说明。n例:例:MOV

6、WORD PTR BX,0n MOV BYTE PTR BX,0指令系统与寻址方式的重要性指令系统与寻址方式的重要性n采用采用不同不同CPU的计算机的的计算机的指令系统不同指令系统不同。n采用采用不同不同CPU的计算机的的计算机的指令的格式指令的格式不同。不同。n采用采用不同不同CPU的计算机的的计算机的各各指令允许的指令允许的寻址方寻址方式不同式不同。n要使用某种微处理器,必须先要掌握其指令系要使用某种微处理器,必须先要掌握其指令系统和各指令允许的寻址方式。统和各指令允许的寻址方式。3.2 8086寻址方式寻址方式n寻址方式寻址方式:u指令中给出的指令中给出的求出操作数有效地址的方法。求出操

7、作数有效地址的方法。n寻址操作寻址操作:u计算机按照指令给出的寻址方式求出操作数计算机按照指令给出的寻址方式求出操作数有效地址的过程。有效地址的过程。8086的七种基本的数据寻址方式的七种基本的数据寻址方式n(1)立即寻址;立即寻址;n(2)寄存器寻址;寄存器寻址;n(3)直接寻址;直接寻址;n(4)寄存器间接寻址;寄存器间接寻址;n(5)寄存器相对寻址;寄存器相对寻址;n(6)基址变址寻址;基址变址寻址;n(7)相对基址相对基址加加变址变址寄存器寄存器寻址。寻址。存存储储器器寻寻址址方方式式3.2.1 立即寻址立即寻址n操作数直接出现在指令中,此时的操作数也叫操作数直接出现在指令中,此时的操

8、作数也叫立即数立即数。n立即数紧跟在操作码后面,一起存放在代码段立即数紧跟在操作码后面,一起存放在代码段中。中。n例如:例如: MOV AX,2010Hu在该指令格式中,在该指令格式中,AX是目标操作数,是目标操作数,2010H是源操作数。是源操作数。立即寻址方式的指令执行示意图立即寻址方式的指令执行示意图立即寻址方式说明立即寻址方式说明n在所有的指令中,立即数只能作源操作数,不能作目标在所有的指令中,立即数只能作源操作数,不能作目标操作数。操作数。n立即数应与目标操作数的长度一致。立即数应与目标操作数的长度一致。n立即数默认采用十进制形式,以十六进制形式出现的立立即数默认采用十进制形式,以十

9、六进制形式出现的立即数应以字母即数应以字母H为后缀,以八进制形式出现的立即数应为后缀,以八进制形式出现的立即数应以字母以字母Q为后缀。为后缀。n以十六进制形式出现的立即数,若以字母开头,则必须以十六进制形式出现的立即数,若以字母开头,则必须以数字以数字0为前缀。为前缀。n立即数还可以用表示立即数还可以用表示+、-、/表示的算术表达式,表示的算术表达式,也可以用圆括号改变运算顺序。也可以用圆括号改变运算顺序。n立即数只能是整数,不能是小数、变量或其它类型的数立即数只能是整数,不能是小数、变量或其它类型的数据。据。3.2.2 寄存器寻址寄存器寻址n操作数在寄存器中,在指令中指定寄存器号。操作数在寄

10、存器中,在指令中指定寄存器号。n由于寄存器号短,因此,采用寄存器寻址方式由于寄存器号短,因此,采用寄存器寻址方式的指令的机器码长度短。的指令的机器码长度短。n操作数在寄存器操作数在寄存器中,指令执行时,操作就在中,指令执行时,操作就在CPU的内部进行,的内部进行,不需要通过访问存储器来取不需要通过访问存储器来取得操作数,因而指令的执行速度快得操作数,因而指令的执行速度快。n在编程中,如有可能,应尽量在指令中使用这在编程中,如有可能,应尽量在指令中使用这种寻址方式。种寻址方式。n例如:例如: MOV AX,2010H寄存器寻址方式可用的寄存器寄存器寻址方式可用的寄存器n对于对于16位操作数位操作

11、数,寄存器可以是:,寄存器可以是:uAX,BX,CX,DXuSI,DI,SP,BPuCS,DS,SS和和ESn对对8位操作数位操作数,寄存器可以是:,寄存器可以是:uAH,ALuBH,BLuCH,CLuDH,DL寄存器寻址方式指令执行示意图寄存器寻址方式指令执行示意图寄存器寻址方式说明寄存器寻址方式说明n在一条指令中,寄存器寻址方式既可用于源操在一条指令中,寄存器寻址方式既可用于源操作数,也可用于目标操作数,还可以两者都用作数,也可用于目标操作数,还可以两者都用寄存器寻址方式。寄存器寻址方式。n源操作数与目标操作数的长度应一致。例如,源操作数与目标操作数的长度应一致。例如,不能将寄存器不能将寄

12、存器AX的内容传送到寄存器的内容传送到寄存器BH中,中,也不能将寄存器也不能将寄存器BH的内容传送到寄存器的内容传送到寄存器AX中。中。n两个操作数不能同时为段寄存器。两个操作数不能同时为段寄存器。n目标操作数不能是代码段寄存器。目标操作数不能是代码段寄存器。5种与内存单元有关的寻址种与内存单元有关的寻址n1、操作数存放在内存中、操作数存放在内存中,取完指令后还需到内存取数取完指令后还需到内存取数;n2、指令中给出的该操作数的地址,包括段地址和偏、指令中给出的该操作数的地址,包括段地址和偏移地址;指令中用移地址;指令中用 给出偏移地址。给出偏移地址。n3、按给出偏移地址方式的不同,分为以下、按

13、给出偏移地址方式的不同,分为以下5种:种:n直接寻址:直接寻址: MOV AL,1000Hn寄存器间接寻址:寄存器间接寻址: MOV AL,BXn寄存器相对寻址:寄存器相对寻址: MOV AL,BX+10Hn基址加变址寄存器寻址:基址加变址寄存器寻址:MOV AL,BX+SIn相对基址加变址寄存器:相对基址加变址寄存器:MOV AL,BX+SI+10Hn除直接寻址外除直接寻址外,内存操作数地址只能由内存操作数地址只能由BX/BP、SI/DI给出。给出。3.2.3 直接寻址直接寻址n操作数在存储器中操作数在存储器中,指令中以具体数值的形式,指令中以具体数值的形式直接给出操作数所在存储单元的有效地

14、址直接给出操作数所在存储单元的有效地址EA。为了与立即数区别,该为了与立即数区别,该有效地址有效地址必须用必须用 括起。括起。n例如:例如: MOV AX,2010Hu该指令的源操作数采用直接寻址方式。该指令的源操作数采用直接寻址方式。u若若(DS)=2000H,那么指令执行后,那么指令执行后,(AX)=1225H。段基地址段基地址EA操作数操作数+指令指令存储器存储器直接寻址方式指令执行示意图直接寻址方式指令执行示意图n采用直接寻址方式时,采用直接寻址方式时,如果指令中没有用前缀如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放说明操作数存放在哪个段,则操作数默认存放在数据段在数据

15、段。n8086系统允许操作数存放在代码段、堆栈段或系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中指明段超越。附加段。此时,就需要在指令中指明段超越。n例如:例如: MOV ES:1225H,AX u该指令的目标操作数采用直接寻址方式。操作数存该指令的目标操作数采用直接寻址方式。操作数存放在由放在由ES指示的附加段中指示的附加段中。u物理地址物理地址=ES10H+1225H。n在汇编语言指令中,可以用在汇编语言指令中,可以用符号地址符号地址代替代替数值数值地址地址。n例如:例如: MOV AX,NUMAu此时,此时,NUMA是存放操作数的内存单元的符号地址。是存放操作数的内存单

16、元的符号地址。n上面这条指令还可以写成如下的形式:上面这条指令还可以写成如下的形式: MOV AX,NUMAn如如DATA1数据存放在附加段,则可以用如下的数据存放在附加段,则可以用如下的形式指定段跨越前缀:形式指定段跨越前缀: MOV AX,ES: NUMA 或或 MOV AX,ES: NUMA直接寻址示例直接寻址示例1 MOV AX, 物理地址物理地址 设设(DS)=10A0H 代码段代码段 + OP 00H 10H 数据段数据段 11A00H 30H 50H 50H 30H AX(本章中图示存储器地址从上到下递增)本章中图示存储器地址从上到下递增)低地址低地址10A00H1000H11A

17、00H10A0H30H50H11A00H直接寻址示例直接寻址示例2MOV BL, 物理地址物理地址 设设(ES)=3000H 30000H (DS)=2000H + 0100H 30100H 4B 00 BL4B在汇编语言指令中,可以用在汇编语言指令中,可以用代替数值地址代替数值地址如:如:MOV AX, 或或 MOV AX, 3000H30100H30100H4B3.2.4 寄存器间接寻址寄存器间接寻址n操作数的操作数的有效地址有效地址EA存放在存放在基址寄存器基址寄存器BX、BP或或变址寄存器变址寄存器SI、DI中。中。n为了区别于寄存器寻址方式,指令中指定的寄为了区别于寄存器寻址方式,指

18、令中指定的寄存器名要用存器名要用 括起来。括起来。n指令中使用指令中使用SI、DI、BX寄存器时,操作数默认寄存器时,操作数默认存放在数据段中;使用存放在数据段中;使用BP寄存器时,操作数寄存器时,操作数默认存放在堆栈段中,允许段超越。默认存放在堆栈段中,允许段超越。n操作数的物理地址操作数的物理地址=(DS)10H+(SI)/(DI)/(BX) 或或 (SS)10H+(BP)n例如:例如: MOV AX,SI n该指令的源操作数采用寄存器间接寻址方式。该指令的源操作数采用寄存器间接寻址方式。n若若(DS)=2000H,(SI)=2010H,那么指令执行,那么指令执行后,后,(AX)=1225

19、H。n如操作数不存放在间址寄存器默认的段,则指如操作数不存放在间址寄存器默认的段,则指定段超越的指令可采用如下形式。定段超越的指令可采用如下形式。 MOV AX,ES:SI 此时,操作数的物理地址此时,操作数的物理地址=ES10H+SI。寄存器间接寻址方式指令执行示意图寄存器间接寻址方式指令执行示意图MOV AH, MOV BX,MOV CX, SI设设 (SS)=1000H, (DS)=2000H , (BP)=0B10H, (SI)=032AH 物理地址物理地址 物理地址物理地址 10000H 20000H + 0B10H + 032AH 40H 00H 3EH 46H40H 10B10H

20、2032AH463EH 2032BH10B11H 032AH032AH1000H2000H0B10H032AH10B10H10B10H2032AH2032AH40H3EH46032AH3.2.5 寄存器相对寻址寄存器相对寻址n操作数的有效地址操作数的有效地址EA是指令中指定的是指令中指定的基址或基址或变址寄存器的值与变址寄存器的值与位移量位移量之和之和。n指令中使用指令中使用SI、DI、BX寄存器时,操作数默认寄存器时,操作数默认存放在数据段中;使用存放在数据段中;使用BP寄存器时,操作数寄存器时,操作数默认存放在堆栈段中,允许段超越。默认存放在堆栈段中,允许段超越。n操作数的物理地址操作数的

21、物理地址=(DS)10H+(SI)/(DI)/(BX)+8位或位或16位位移量位位移量 或或 =(SS)10H+(BP)+8位或位或16位位移量位位移量n例如:例如: MOV AX,8BX n该指令的源操作数采用该指令的源操作数采用寄存器相对寻址寄存器相对寻址方式。方式。n若(若(DS)=2000H,(,(BX)=2008H,那么指,那么指令执行后,(令执行后,(AX)=1225H。寄存器相对寻址方式的指令执行示意图寄存器相对寻址方式的指令执行示意图寄存器相对寻址说明寄存器相对寻址说明n偏移量是符号数偏移量是符号数,8位偏移量的取值范围为:位偏移量的取值范围为:000FFH(即即+127D-1

22、28D);n16位偏移量的取值范围为:位偏移量的取值范围为:00000FFFFH(即即+32767D-32768D)。n8086汇编允许用下面三种形式表示汇编允许用下面三种形式表示相对寻址相对寻址,它们是等效的。它们是等效的。MOV AX,BX+8 MOV AX,8BX MOV AX,BX+83.2.6 基址加变址寄存器寻址基址加变址寄存器寻址n操作数的操作数的有效地址有效地址EA是指令中指定的是指令中指定的基址寄基址寄存器存器的值与的值与变址寄存器变址寄存器的值之和。的值之和。n指令中使用基址寄存器指令中使用基址寄存器BX时,操作数默认存时,操作数默认存放在数据段中;放在数据段中;n使用基址寄存器使用基址寄存器BP时,操作数默认存放在堆时,操作数默认存放在堆栈段中,允许段超越。栈段中,允许段超越。n操作数的物理地址操作数的物理地址=(DS)10H+ (BX) + (SI)/(DI)或或 =(SS)10H+ (BP) + (SI)/(DI)n例如:例如: MOV AX,BX SI n该指令的源操作数采用基址变址寻址方式。该指令的源操作数采用基址变址寻址方式。n若(若(DS)=2000H,(,(BX)=2008H,(,(SI)=8H;n则则指令

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论