精华内容
下载资源
问答
  • 七种寻址方式

    万次阅读 多人点赞 2018-08-09 17:36:36
    其中,后五种寻址方式(即直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址)属于存储器寻址,用于说明操作数或操作数地址所在存储单元的地址。 基本寻址方式 下面重点说一下这七种基本...

    七种基本的寻址方式:立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址。其中,后五种寻址方式(即直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址)属于存储器寻址,用于说明操作数或操作数地址所在存储单元的地址。

    基本寻址方式

    下面重点说一下这七种基本寻址方式的特点:

    1. 立即寻址方式

    先解释一个概念,叫做立即数

    操作数包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段。这种操作数称为立即数。

    立即寻址方式所提供的操作数紧跟在操作码后面,与操作码一起放在指令代码段中,不需要到其他地址单元中去取。立即数可以是8位,也可以是16位。这种寻址方式主要用于给寄存器或存储单元赋初值的场合。立即寻址方式是这七种寻址方式中速度最快的寻址方式。

    2. 寄存器寻址方式

    寄存器寻址的特点是操作数在CPU内部的寄存器中,在指令中指定寄存器号。

    由于操作数在寄存器中,不需要通过访问存储器来取得操作数,所以采用寄存器寻址方式的指令执行速度较快。

     

    3. 直接寻址方式

    直接寻址的操作数在存储器中,指令直接包含有操作数的有效地址。

    4. 寄存器间接寻址方式

    寄存器间接寻址的操作数在存储器中,操作数有效地址在寄存器中

    5. 寄存器相对寻址方式

    该寻址方式是以指定的寄存器内容,加上指令中给出的位移量(8位或16位),并以一个段寄存器为基准,作为操作数的地址。指定的寄存器一般是一个基址寄存器或变址寄存器。

    6. 基址变址寻址方式

    基址加变址寻址方式是指将寄存器(该寄存器一般指基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。

    7. 相对基址变址寻址方式

    操作数在存储器中,操作数的有效地址由基址寄存器之一的内容与变址寄存器之一的内容及指令中给定的位移量相加得到。

                                       

    展开全文
  • 汇编语言七种寻址方式 1.立即寻址方式 操作数直接包含在指令中,紧跟在操作码之后的寻址方式称为立即寻址方式,把该操作数称为立即数。 MOV AL, 6 2.寄存器寻址方式 操作数直接包含在寄存器中,由指令指定寄存器号...

    汇编语言七种寻址方式

    1.立即寻址方式
    操作数直接包含在指令中,紧跟在操作码之后的寻址方式称为立即寻址方式,把该操作数称为立即数。

    MOV  AL, 6 
    

    2.寄存器寻址方式
    操作数直接包含在寄存器中,由指令指定寄存器号的寻址方式。

    MOV  BX, AX
    

    3.直接寻址方式
    操作数的有效地址直接包含在指令中的寻址方式。有效地址存放在代码段的指令操作码之后,但操作数本身在存储器中,所以必须先求出操作数的物理地址。这种寻址方式常用于存取简单变量。

    MOV  AL, [78H]
    

    4.相对寻址
    目标地址=PC当前值+跳转指令字节数+rel,仅在转移指令中使用
    5.变址寻址
    以DPTR或PC作为基址,累加器A为变址,并将两者内容相加形成的16位地址作为操作数地址

    MOVC A, @A+DPTR ;执行后(A)=((A)+(DPTR))
    

    6.位寻址
    操作数是内部RAM 20H2FH单元中的位(007FH)或者SFR中具有位地址的某一位

    MOV C, 20H ;20H位的值传送给进位位CY,20H为位地址
    

    7.寄存器间接寻址
    以寄存器中的内容为地址,以该地址中的内容为操作数。MCS-51规定R0或R1为间接寻址寄存器

    MOV A, @R0 ;执行后A=((R0))
    

    不能用立即数进行寄存器寻址
    在这里插入图片描述

    展开全文
  • 本篇主要介绍了操作系统中,七种寻址方式。 一、立即数寻址 操作数作为指令的一部分,直接写在指令中,这样的寻址方式是立即数寻址。如果立即数为16位或32位,则按照高高低低储存。 MOV AH, 80H ADD AX, 1234H ...

    本篇主要介绍了操作系统中,七种寻址方式。

    一、立即数寻址

    操作数作为指令的一部分,直接写在指令中,这样的寻址方式是立即数寻址。如果立即数为16位或32位,则按照高高低低储存。

    MOV AH, 80H
    ADD AX, 1234H
    

    C语言中int a = 10;也是用到了立即数寻址。

    二、寄存器寻址

    在指令中,如果使用到了寄存器,无论是源操作数还是目标操作数,均为寄存器寻址。

    常用的寄存器有:AH, AL, BH, BL, AX, BX, EAX, EBX等。

    MOV EAX, EBX
    MOV DH, BL
    

    三、直接寻址

    指令所要的操作数在内存,在指令中直接给操作数的有效地址。

    MOV BX, [1234H]
    MOV AX VARW    ;VARW是变量名
    

    方括号表示并不是将1234H放入寄存器,而是将1234H作为地址,去取出这个地址位置的数放入BX中。该寻址方式可在64k的段内进行寻址。

    汇编语言中定义变量:

    .data
    sum DWORD 0
    

    这样变量sum·就是0了。除了DWORD,还有DB DW DD BYTE WORD这些。

    四、寄存器间接寻址

    操作数在内存中,其地址用SI DI BX BP四个寄存器来指定。如果用前三个寄存器,则段寄存器为DS,若为BP寄存器,则段寄存器为SS。

    MOV BX, [DI]
    

    操作数最终的地址就是段地址加上寄存器中偏移地址。如果DS为1000H,DI为2345H,那么最终地址为12345H。

    五、寄存器相对寻址

    操作数在存储器中,有效地址为基址寄存器(BX, BP)或变址寄存器(SI, Di)的内容和指令中的8/16位偏移量之和。如果是SI DI BX来指定地址,则缺省的段寄存器为DS,如果是BP来指定,则缺省段寄存器为SS。

    MOV BX, [SI+100H]
    

    如果DS为1000H,SI为2345H,则最后的地址为123445H。

    六、基址加变址寻址

    操作数在储存器,有效地址是基址寄存器(BX, BP)和变址寄存器(SI, DI)之和。

    MOV BX, [BX+SI]
    

    DS地址为1000H,BX为2100H,SI为0011H。最后的地址为12111H。

    七、相对基址加变址

    操作数在存储器中,有效地址是基址寄存器、变址寄存器和一个偏移量之和。此种寻址方法有很多寻址方式。

    MOV AX, [BX+SI+200H]
    MOV AX, 1000H[BX+SI]
    MOV AX, 1000H[BX][SI]
    MOV AX, 1000H[SI][BX]
    

    如果DS为1000H,BX为2100H,SI为0010H,则最后的地址为12310H。

    展开全文
  • 七种寻址方式(立即寻址、寄存器寻址)

    万次阅读 多人点赞 2016-10-04 10:24:34
    七种寻址方式(立即寻址、寄存器寻址) 一、立即寻址方式 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。 立即数可以是8位、16位或32位,该数值...

    本文转自:http://blog.csdn.net/hanchaoman/article/details/9187093

    七种寻址方式(立即寻址、寄存器寻址)

    一、立即寻址方式

    操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。

    立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:

    MOV AH, 80H   ADD AX, 1234H   MOV ECX, 123456H
    MOV B1, 12H   MOV W1, 3456H   ADD D1, 32123456H

    其中:B1、W1和D1分别是字节、字和双字单元。

    以上指令中的第二操作数都是立即数,在汇编语言中,规定:立即数不能作为指令中的第二操作数。该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。

    立即数寻址方式通常用于对通用寄存器或内存单元赋初值。图是指令“MOV AX, 4576H”存储形式和执行示意图。

    二、寄存器寻址方式

      指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。
    指令中可以引用的寄存器及其符号名称如下:
      8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;
      16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;
      32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。
    寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。


    1、源操作数是寄存器寻址方式
      如:ADD VARD, EAX  ADD VARW, AX   MOV VARB, BH等。
      其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。在第4章将会学到如何定义它们。


    2、目的操作数是寄存器寻址方式
      如:ADD BH, 78h    ADD AX, 1234h   MOV EBX, 12345678H等。


    3、源和目的操作数都是寄存器寻址方式
      如:MOV EAX, EBX   MOV AX, BX     MOV DH, BL等。


      由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,我们提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。

    七种寻址方式(直接寻址方式)

    指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。

    在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。

    例:假设有指令:MOV BX, [1234H],在执行时,(DS)=2000H,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么?

    解:根据直接寻址方式的寻址规则,把该指令的具体执行过程用下图来表示。

    从图中,可看出执行该指令要分三部分:
     
    由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;

    访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存储单元的物理地址:21234H;

    取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。

    所以,在执行该指令后,BX的值就为5213H。
     

    由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。

    下面指令的目标操作数就是带有段前缀的直接寻址方式。

    MOV ES:[1000H], AX

    直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在64K字节的段内进行寻址。

    注意:立即寻址方式和直接寻址方式的书写格式的不同,直接寻址的地址要写在括号“[”,“]”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。

    试比较下列指令中源操作数的寻址方式(VARW是内存字变量):
      MOV AX, 1234H MOV AX, [1234H] ;前者是立即寻址,后者是直接寻址 
      MOV AX, VARW MOV AX, [VARW] ;两者是等效的,均为直接寻址

    七种寻址方式(寄存器间接寻址方式)

    操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下:



    寄存器间接寻址方式读取存储单元的原理如图所示。

    在不使用段超越前缀的情况下,有下列规定:

    若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
    若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。

    例:假设有指令:MOV BX,[DI],在执行时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。问执行指令后,BX的值是什么?

    解:根据寄存器间接寻址方式的规则,在执行本例指令时,寄存器DI的值不是操作数,而是操作数的地址。该操作数的物理地址应由DS和DI的值形成,即: 

    PA=(DS)*16+DI=1000H*16+2345H=12345H。

    所以,该指令的执行效果是:把从物理地址为12345H开始的一个字的值传送给BX。

    其执行过程如图所示。


    七种寻址方式(寄存器相对寻址方式)

    操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D

    I)的内容和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。

    在不使用段超越前缀的情况下,有下列规定:
     
        若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
     
        若有效地址用BP来指定,则其缺省的段寄存器为SS。
     
    指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过0FFFFH,则取其64K的模。

    例:假设指令:MOV BX, [SI+100H],在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么?

    解:根据寄存器相对寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
     
    EA=(SI)+100H=2345H+100H=2445H
     
    该操作数的物理地址应由DS和EA的值形成,即:
     
    PA=(DS)*16+EA=1000H*16+2445H=12445H。

    所以,该指令的执行效果是:把从物理地址为12445H开始的一个字的值传送给BX。

    其执行过程如图所示。


    七种寻址方式(基址加变址寻址方式)

    操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如公式所示。

    在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则缺省的段寄存器为SS;否则,缺省的段寄存器为DS。

    例:假设指令:MOV BX, [BX+SI],在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内存单元12111H的内容为1234H。问该指令执行后,BX的值是什么?

    解:根据基址加变址寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:

    EA=(BX)+(SI)=2100H+0011H=2111H

    该操作数的物理地址应由DS和EA的值形成,即:

    PA=(DS)*16+EA=1000H*16+2111H=12111H

    所以,该指令的执行效果是:把从物理地址为12111H开始的一个字的值传送给BX。

    其执行过程如图所示。


     

     

    七种寻址方式(相对基址加变址寻址方式)

    操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。 

    在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则其缺省的段寄存器为SS;否则,其缺省的段寄存器为DS。

    指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过0FFFFH,则取其64K的模。

    例:假设指令:MOV AX, [BX+SI+200H],在执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H,内存单元12310H的内容为1234H。问该指令执行后,AX的值是什么?

    解:根据相对基址加变址寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:

    EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H

    该操作数的物理地址应由DS和EA的值形成,即:

    PA=(DS)*16+EA=1000H*16+2310H=12310H

    所以,该指令的执行效果是:把从物理地址为12310H开始的一个字的值传送给AX。其执行过程如图所示。

    从相对基址加变址这种寻址方式来看,由于它的可变因素较多,看起来就显得复杂些,但正因为其可变因素多,它的灵活性也就很高。比如:
      
    用D1[i]来访问一维数组D1的第i个元素,它的寻址有一个自由度,用D2[i][j]来访问二维数组D2的第i行、第j列的元素,其寻址有二个自由度。多一个可变的量,其寻址方式的灵活度也就相应提高了。

    相对基址加变址寻址方式有多种等价的书写方式,下面的书写格式都是正确的,并且其寻址含义也是一致的。

    MOV AX, [BX+SI+1000H]   MOV AX, 1000H[BX+SI]
    MOV AX, 1000H[BX][SI]    MOV AX, 1000H[SI][BX]

    但书写格式BX [1000+SI]和SI[1000H+BX]等是错误的,即所用寄存器不能在“[“,”]”之外,该限制对寄存器相对寻址方式的书写也同样起作用。

    相对基址加变址寻址方式是以上7种寻址方式中最复杂的一种寻址方式,它可变形为其它类型的存储器寻址方式。下表列举出该寻址方式与其它寻址方式之间的变形关系。
    展开全文
  • 汇编语言的七种寻址方式

    千次阅读 2017-10-14 15:25:44
    汇编语言的七种寻址方式
  • 在32位微机系统中,除了支持前面的七种寻址方式外,又提供了一种更灵活、方便,但也更复杂的内存寻址方式,从而使内存地址的寻址范围得到了进一步扩大。 在用16位寄存器来访问存储单元时,只能使用基地址寄存器...
  • 共7种寻址方式: 1. 立即寻址方式 立即数包含在指令中,作为指令的一部分。 如 MOV AX 1234H 2. 寄存器寻址方式 操作数在CPU内部的寄存器中,指令指定寄存器号 16位操作数,寄存器可以是:AX,BX,CX,DX,SI...
  • 8086七种寻址方式

    2019-10-07 11:09:05
    寻址方式的速度是由指令周期决定的,写一个效率高的程序也就需要了解这些不同指令执行的速度 指令周期:是取出一条指令并执行这条指令的时间 查询指令执行的表可以看出寻址方式排序如下 指令周期 1.寄存器寻址 2...
  • 七种寻址方式(寄存器间接寻址方式)

    千次阅读 2018-01-22 19:12:09
    操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下: 寄存器间接寻址方式读取存储单元的原理如图所示。 ...
  • 七种寻址方式(直接寻址方式)

    千次阅读 2018-01-22 19:10:39
    指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。 在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,...
  • 立即寻址方式: 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。立即数可以是8位、16位或32位,该数值紧跟在操作码之后。 寄存器寻址方式: 指令所要的操作数...
  • 8086中的七种寻址方式

    2016-10-16 12:01:00
    其中,后五种寻址方式(即直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址)属于存储器寻址,用于说明操作数或操作数地址所在存储单元的地址。这五种方式也就是确定存放操作数的存储单元...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 131
精华内容 52
关键字:

七种寻址方式