微原-第3章1-寻址方式_第1页
微原-第3章1-寻址方式_第2页
微原-第3章1-寻址方式_第3页
微原-第3章1-寻址方式_第4页
微原-第3章1-寻址方式_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、3.3 3.3 数据与转移地址的寻址方式数据与转移地址的寻址方式在指令中,用于说明操作数所在地址的方在指令中,用于说明操作数所在地址的方法就称为法就称为寻址方式寻址方式。8086CPU8086CPU指令系统的寻址方式分为两类:指令系统的寻址方式分为两类: 数据的寻址方式数据的寻址方式:寻找指令操作所需:寻找指令操作所需数据的方法;数据的方法;1.1.转移地址的寻址方式转移地址的寻址方式:寻找转移指令:寻找转移指令所需的程序地址。所需的程序地址。 下面讲关于数据的寻址方式时,均以数下面讲关于数据的寻址方式时,均以数据传送指令据传送指令MOVMOV为例讲解。为例讲解。MOVMOV指令格式如下:指令

2、格式如下:MOV DST , SRCMOV DST , SRC 目的操作数目的操作数源操作数源操作数助记符助记符指令完成的功能指令完成的功能: (DSTDST) (SRC)(SRC)3.3 3.3 数据寻址方式数据寻址方式数据的寻址方式(共数据的寻址方式(共8 8种):种):l立即寻址立即寻址(Immediate Addressing )(Immediate Addressing )l寄存器寻址寄存器寻址(Register Addressing )(Register Addressing )l存储器寻址存储器寻址( (Memory AddressingMemory Addressing ) )

3、(5 5种):直种):直接寻址、寄存器间接寻址、寄存器相对寻址、接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和基址变址且相对寻址基址变址寻址和基址变址且相对寻址l隐含寻址隐含寻址(Hidden Addressing )(Hidden Addressing )数据的寻址方式就是告诉数据的寻址方式就是告诉CPUCPU存存/ /取数据的地方。取数据的地方。3.3 3.3 数据寻址方式数据寻址方式1.1.立即寻址立即寻址 操作数直接存放在指令中,紧跟在操作码之操作数直接存放在指令中,紧跟在操作码之后,作为指令的一部分,后,作为指令的一部分,存放在代码段存放在代码段里,这种里,这种操作数称为操作

4、数称为立即数立即数。 立即寻址主要用来给立即寻址主要用来给REGREG或或M M赋初值。赋初值。注意:注意:只能用于源操作数字段,不能用于目的操只能用于源操作数字段,不能用于目的操作数字段。作数字段。如:如:MOV 12H , AL (语法错误语法错误)3.3 3.3 数据寻址方式数据寻址方式A HA H A LA L A XA XCSCS段段操作码操作码存储器存储器例:例:MOV AX MOV AX ,1234H1234HB8HB8H34H34H12H12H(AX)=1234H(AX)=1234H3.3 3.3 数据寻址方式数据寻址方式2.2.寄存器寻址寄存器寻址 数据放在指令规定的寄存器中

5、,对数据放在指令规定的寄存器中,对1616位数据,位数据,REGREG可以是可以是AXAX、BXBX、CXCX、DXDX、SISI、DIDI、SPSP、BPBP以及以及段寄存器段寄存器,而对于,而对于8 8位数据,位数据, REGREG可以是可以是AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL。 在程序设计中,一般存放数据时,寄存器选在程序设计中,一般存放数据时,寄存器选择通用寄存器,而存放结果时尽可能的使用择通用寄存器,而存放结果时尽可能的使用AXAX累累加器,因为使用加器,因为使用AXAX累加器要比用其它寄存器存放累加器要比用其它寄存器存放结果,指令执行时间

6、要短一些。结果,指令执行时间要短一些。 寄存器寻址既可以作寄存器寻址既可以作DST,DST,也可以作也可以作SRCSRC。3.3 3.3 数据寻址方式数据寻址方式例:例:MOV AX , BXMOV AX , BXA XA X B XB X 若(若(AXAX)=1234H,(BX)=5678H=1234H,(BX)=5678H,则,则CPUCPU执行执行指令后,(指令后,(AXAX)=5678H=5678H,而(,而(BXBX)不变。)不变。 又如:又如:MOV CX , DL MOV CX , DL (语法错误语法错误) 错误原因:类型不一致。错误原因:类型不一致。3.3 3.3 数据寻址方

7、式数据寻址方式 这类寻址方式,操作数在存储器中,而这类寻址方式,操作数在存储器中,而存储器单元的地址由以下存储器单元的地址由以下五种五种寻址方式的任寻址方式的任何一种均可以找到何一种均可以找到。但在指令中给出的。但在指令中给出的只是只是要寻找的操作数所在单元的要寻找的操作数所在单元的段内偏移地址段内偏移地址,而操作数所在单元的段地址除非指令中用段而操作数所在单元的段地址除非指令中用段前缀特别指明,否则是前缀特别指明,否则是默认的默认的DSDS。3.3.存储器寻址存储器寻址3.3 3.3 数据寻址方式数据寻址方式 指令中直接给出了要寻找操作数所在单元的指令中直接给出了要寻找操作数所在单元的161

8、6位偏移地址。位偏移地址。 操作数所在单元的物理地址操作数所在单元的物理地址 : PA (段寄存器段寄存器) 16 +指令中给出的偏移地址指令中给出的偏移地址直接寻址(直接寻址(Direct AddressingDirect Addressing ) 指令中直接给出的操作数所在单元的指令中直接给出的操作数所在单元的1616位偏移位偏移地址地址默认在数据段。也可以通过增加段前缀来改变默认在数据段。也可以通过增加段前缀来改变操作数所在的段地址。操作数所在的段地址。3.3 3.3 数据寻址方式数据寻址方式A XA XCSCS段段操作码操作码例例1 1:MOV AX,2000HMOV AX,2000H

9、若若DSDS为为3000H3000H,则:,则:A HA H A LA L 32000H32000H32001H32001H3 0 0 0 0 H3 0 0 0 0 H + +DSDS 存储器存储器数据段数据段20H20H00H00HA1HA1H 2 0 0 0 H 2 0 0 0 H PA=3 2 0 0 0 HPA=3 2 0 0 0 H 3.3 3.3 数据寻址方式数据寻址方式CSCS段段操作码操作码例例2 2:MOV 2000H ,ALMOV 2000H ,AL若若DSDS为为3000H3000H,则:,则:A LA L 32000H32000H3 0 0 0 0 H3 0 0 0 0

10、 H + +DSDS 存储器存储器数据段数据段20H20H00H00H 2 0 0 0 H 2 0 0 0 H PA=3 2 0 0 0 HPA=3 2 0 0 0 H 3.3 3.3 数据寻址方式数据寻址方式CSCS段段操作码操作码例例3 3:MOV ES:2000H ,ALMOV ES:2000H ,AL若若ESES为为2050H2050H,则:,则:A LA L 22500H22500H2 0 5 0 0 H2 0 5 0 0 H + +ESES存储器存储器附加数据段附加数据段20H20H00H00H 2 0 0 0 H 2 0 0 0 H PA=2 2 5 0 0 HPA=2 2 5

11、0 0 H 前缀码前缀码3.3 3.3 数据寻址方式数据寻址方式 在实际的汇编语言程序设计中,如果程在实际的汇编语言程序设计中,如果程序比较复杂,而用到的存放数据的单元又很序比较复杂,而用到的存放数据的单元又很多,那么在直接寻址方式当中,用户就要记多,那么在直接寻址方式当中,用户就要记住存放数据的每个单元的地址,同时还要记住存放数据的每个单元的地址,同时还要记住该地址单元存放的数据的意义,这样对设住该地址单元存放的数据的意义,这样对设计程序带来了很大的困难。所以在实际的汇计程序带来了很大的困难。所以在实际的汇编语言程序设计中,常常采用给存放数据的编语言程序设计中,常常采用给存放数据的单元,定义

12、一个单元,定义一个符号地址名符号地址名,即,即变量名变量名/ /变变量量。3.3 3.3 数据寻址方式数据寻址方式变量名一但定义了,就具有了:变量名一但定义了,就具有了:该单元的段地址该单元的段地址该单元的偏移地址该单元的偏移地址类型类型大小大小长度长度五个属性五个属性 这样,在程序设计中就可以用这个变量名这样,在程序设计中就可以用这个变量名代替原来的存储器单元的实际地址。代替原来的存储器单元的实际地址。3.3 3.3 数据寻址方式数据寻址方式例例4 4:若:若(DS)=1500H,TABLE(DS)=1500H,TABLE为在为在DSDS段定义的一个字变量,段定义的一个字变量,且偏移地址为且

13、偏移地址为0004H0004H。则。则CPUCPU执行执行 MOV AX ,TABLE MOV AX ,TABLE 指令完指令完成的操作如下:成的操作如下:1 5 0 0 0 H1 5 0 0 0 H + +DSDS存储器存储器数据段数据段 0 0 0 4 H 0 0 0 4 H PA=1 5 0 0 4 HPA=1 5 0 0 4 H A HA H A LA L 15004H15004H15005H15005HTABLETABLE3.3 3.3 数据寻址方式数据寻址方式例例5 5:若:若VAR1VAR1为字变量,为字变量, VAR2VAR2为字节变量,判断为字节变量,判断下列指令的书写格式是

14、否正确,正确的说出下列指令的书写格式是否正确,正确的说出SRCSRC和和DSTDST的寻址方式,不正确说出错误原因。的寻址方式,不正确说出错误原因。 MOV AX , VAR1 MOV AX , VAR1 MOV AX , VAR2 MOV AX , VAR23.3 3.3 数据寻址方式数据寻址方式 SRCSRC为直接寻址为直接寻址 DSTDST为寄存器寻址为寄存器寻址 类型不一致类型不一致 这种寻址方式,要寻找的操作数在存储器某这种寻址方式,要寻找的操作数在存储器某单元中,该存储器单元地址的段内单元中,该存储器单元地址的段内1616位偏移地址位偏移地址由寄存器给出。由寄存器给出。在指令中以在

15、指令中以BXBX、SISI、DIDI某一个寄存器给出时,其某一个寄存器给出时,其段地址默认在段地址默认在DSDS段。段。在指令中以在指令中以BPBP寄存器给出时,其段地址默认在寄存器给出时,其段地址默认在SSSS段。段。寄存器间接寻址寄存器间接寻址Register Indirect AddressingRegister Indirect Addressing3.3 3.3 数据寻址方式数据寻址方式例例1 1:MOV AX , BXMOV AX , BX 其其SRCSRC为寄存器间接寻址;为寄存器间接寻址; DSTDST为寄存器寻址;为寄存器寻址; 指令完成的功能为:指令完成的功能为: AX (

16、DSAX (DS:(BX):(BX) ) 若:若:DS=3000H , BX=1050HDS=3000H , BX=1050H 则:则:SRCSRC所在单元的物理地址为:所在单元的物理地址为:PA=(DS) PA=(DS) 16+(BX) 16+(BX) =30000H+1050H =30000H+1050H =31050H =31050H3.3 3.3 数据寻址方式数据寻址方式CSCS段段操作码操作码A HA H A LA L 31050H31050H31051H31051H 存储器存储器数据段数据段A XA X8BH8BH07H07H3 0 0 0 0 H3 0 0 0 0 H DS:DS

17、:+ + 1 0 5 0 H 1 0 5 0 H3 1 0 5 0 H3 1 0 5 0 H BX:BX:PA:PA:3.3 3.3 数据寻址方式数据寻址方式例例2 2:MOV ES:SI , ALMOV ES:SI , AL 指令完成的功能为:指令完成的功能为: (ES:(SI) (AL)(ES:(SI) (AL) 若:若:ES=4000H , SI=1234H,(AL)=23HES=4000H , SI=1234H,(AL)=23H 则:则:DSTDST所在单元的物理地址为:所在单元的物理地址为: PA=(ES)PA=(ES)16+(SI)16+(SI) =40000H+1234H =40

18、000H+1234H =41234H =41234H 指令执行后指令执行后(41234H)=23H.(41234H)=23H.3.3 3.3 数据寻址方式数据寻址方式 要寻找的操作数在某存储器单元之中,该单元要寻找的操作数在某存储器单元之中,该单元的有效地址的一部分在的有效地址的一部分在 中,另一部分为一中,另一部分为一个个 DISPDISP。BPBPSISIBXBXDIDI寄存器相对寻址寄存器相对寻址Register Relative Register Relative Addressing Addressing 8 8位位1616位位其中,其中,DISPDISP相对位移量相对位移量3.3

19、3.3 数据寻址方式数据寻址方式EAEA=BPBPSISIBXBXDIDI8 8位位DISPDISP1616位位DISPDISP+ + 在在DISPDISP为常数时,操作数所在单元的段地址以为常数时,操作数所在单元的段地址以寄存器为准,若寄存器为寄存器为准,若寄存器为BXBX、SISI、DIDI,操作数默认,操作数默认在在DSDS段中。若寄存器为段中。若寄存器为BPBP,操作数默认在,操作数默认在SSSS段中。段中。 在在DISPDISP为变量时,操作数所在单元的段地址以为变量时,操作数所在单元的段地址以变量为准,变量在哪个段定义的,就取该段的段地变量为准,变量在哪个段定义的,就取该段的段地址

20、。址。3.3 3.3 数据寻址方式数据寻址方式例例1 1:MOV AX , BX+05HMOV AX , BX+05H 其中,其中,SRCSRC也可以写成:也可以写成: 若:若:DS=2000H , BX=0008H, DS=2000H , BX=0008H, 存放操作存放操作数单元的物理地址为:数单元的物理地址为:PA=(DS)PA=(DS)16+(BX)+05H16+(BX)+05H =20000H+0008H+05H =20000H+0008H+05H =2000DH =2000DHBX+05HBX+05H05HBX05HBX05H+BX05H+BX3.3 3.3 数据寻址方式数据寻址方

21、式CSCS段段操作码操作码A HA H A LA L 2000DH2000DH2000EH2000EH+ + 存储器存储器数据段数据段AXAX8BH8BH47H47H05H05H2 0 0 0 0 H2 0 0 0 0 H0 0 0 8 H0 0 0 8 H2 0 0 0 D H2 0 0 0 D H0 0 0 5 H0 0 0 5 H3.3 3.3 数据寻址方式数据寻址方式例例2 2:若:若(DS)=1500H,TABLE(DS)=1500H,TABLE为在为在DSDS段定义的一个字段定义的一个字变量,且偏移地址为变量,且偏移地址为0004H,(BP)=0003H0004H,(BP)=000

22、3H。 MOV AX ,TABLE BPMOV AX ,TABLE BPSRCSRC的寻址方式为寄存器相对寻址。的寻址方式为寄存器相对寻址。指令完成的操作为:指令完成的操作为: (AXAX) ( (DSDS: : OFFSETOFFSET TABLE+(BP) TABLE+(BP)3.3 3.3 数据寻址方式数据寻址方式MOV AX ,0004H BP ?MOV AX ,0004H BP ? (AXAX) ( (SSSS: : 0004H0004H+(BP)+(BP) 要寻找的操作数在某存储器单元之中,该单元要寻找的操作数在某存储器单元之中,该单元有效地址的一部分在有效地址的一部分在 中,另一

23、部分在中,另一部分在 中。中。BPBPBXBXSISIDIDI基址变址寻址基址变址寻址Based Indexed AddressingBased Indexed Addressing EAEA=+ +BPBPBXBXSISIDIDI 该单元的段地址以基址寄存器为准,若基址该单元的段地址以基址寄存器为准,若基址寄存器为寄存器为BX,BX,则段地址默认在则段地址默认在DSDS中,若基址寄存器中,若基址寄存器为为BP,BP,则段地址默认在则段地址默认在SSSS中。中。3.3 3.3 数据寻址方式数据寻址方式例例1 1:MOV AX , BXSIMOV AX , BXSI (AX) (DS (AX)

24、(DS:(BX+SI):(BX+SI) ) 例例2 2:MOV AX , BPSIMOV AX , BPSI (AX) (SS (AX) (SS:(BP+SI):(BP+SI)例例3 3:MOV BPDI , ALMOV BPDI , AL (SS (SS:(BP+DI) :(BP+DI) (AL) (AL) 3.3 3.3 数据寻址方式数据寻址方式 它是基址变址寻址的扩充,操作数仍在存储器它是基址变址寻址的扩充,操作数仍在存储器中,存储器单元的有效地址为:中,存储器单元的有效地址为: 同样,同样,如果用如果用BXBX作为基地址,操作数默认在作为基地址,操作数默认在DSDS段中;如果用段中;如

25、果用BPBP作为基地址,则在作为基地址,则在SSSS段中。段中。 在在DISPDISP为变量时,操作数所在单元的段地址以为变量时,操作数所在单元的段地址以变量为准,变量在哪个段定义的,就取该段的段地变量为准,变量在哪个段定义的,就取该段的段地址。址。BPBPBXBXEAEA=8 8位位DISPDISP1616位位DISPDISP+ +SISIDIDI+ +基址变址且相对寻址基址变址且相对寻址Based Indexed Relative AddressingBased Indexed Relative Addressing 3.3 3.3 数据寻址方式数据寻址方式例例1 1: MOV AX ,

26、BXDI04 MOV AX , BXDI04 (AX) (DS (AX) (DS:(BX+DI+04H):(BX+DI+04H) ) 例例2 2:MOV AX , BPDI04MOV AX , BPDI04 (AX) (SS (AX) (SS:(BP+DI+04H):(BP+DI+04H)例例3 3:MOV DS:BPDI+04H , ALMOV DS:BPDI+04H , AL (DS (DS:(BP+DI+04H) :(BP+DI+04H) (AL) (AL) 3.3 3.3 数据寻址方式数据寻址方式8.8.隐含寻址隐含寻址Hidden AddressingHidden Addressin

27、g 有些指令的指令码中不包含指明操作数有些指令的指令码中不包含指明操作数地址的部分,而其操作码本身隐含的指明了地址的部分,而其操作码本身隐含的指明了操作数地址。操作数地址。 如:乘除法指令、字符串操作类指令等。如:乘除法指令、字符串操作类指令等。 3.3 3.3 数据寻址方式数据寻址方式例例1.1.若(若(BXBX)=0158H , =0158H , (DIDI)=10A5H ,=10A5H , (DSDS)=2100H , DISP=1B57H ,=2100H , DISP=1B57H , (BPBP)=0100H , =0100H , (SSSS)=1100H ,=1100H , 段寄存器

28、按默认段寄存器,则相对于各段寄存器按默认段寄存器,则相对于各种寻址方式的种寻址方式的EAEA的求法如下:的求法如下:直接寻址:直接寻址: MOV AX , 1B57HMOV AX , 1B57HEA=1B57HEA=1B57HPA=21000H+1B57H=22B57HPA=21000H+1B57H=22B57H3.3 3.3 数据寻址方式数据寻址方式例例1.1.若(若(BXBX)=0158H , =0158H , (DIDI)=10A5H ,=10A5H , (DSDS)=2100H , DISP=1B57H ,=2100H , DISP=1B57H , (BPBP)=0100H , =01

29、00H , (SSSS)=1100H ,=1100H , 段寄存器按默认段寄存器,则相对于各段寄存器按默认段寄存器,则相对于各种寻址方式的种寻址方式的EAEA的求法如下:的求法如下:寄存器间接寻址:寄存器间接寻址:MOV AX , BX MOV AX , BX EA=0158HEA=0158HPA=21000H+0158H=21158HPA=21000H+0158H=21158H3.3 3.3 数据寻址方式数据寻址方式例例1.1.若(若(BXBX)=0158H , =0158H , (DIDI)=10A5H ,=10A5H , (DSDS)=2100H , DISP=1B57H ,=2100H

30、 , DISP=1B57H , (BPBP)=0100H , =0100H , (SSSS)=1100H ,=1100H , 段寄存器按默认段寄存器,则相对于各段寄存器按默认段寄存器,则相对于各种寻址方式的种寻址方式的EAEA的求法如下:的求法如下:寄存器相对寻址:寄存器相对寻址:MOV AX , BP1B57HMOV AX , BP1B57HEA=0100H+1B57H=1C57HEA=0100H+1B57H=1C57HPA=11000H+1C57H =12C57HPA=11000H+1C57H =12C57H3.3 3.3 数据寻址方式数据寻址方式例例1.1.若(若(BXBX)=0158H , =0158H , (DIDI)=10A5H ,=10A5H ,

温馨提示

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

评论

0/150

提交评论