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

    2018-01-04 19:59:51
    寻址方式

    2017-1-4

    1.对于指令而言 ,分为顺序寻址以及跳跃寻址

    2.对于数据而言,这就很多了……
    指令的地址码字段通常都不代表操作数的真实地址,把他叫做形式地址A,操作数的真实地址称为有效地址EA,他是由寻址方式和形式地址共同决定的。
    一种一地址的指令格式

    操作码+寻址方式+形式地址A

    (1)立即寻址:A是操作数本身,也就是立即数(换言之,我们可以直接在指令中获得操作数的值而不用访问存储器),A的位数限制了立即数的大小。

    (2)直接寻址:A中存放了操作数的地址,即EA=A,我们只要根据A的值去主存中进行一次访存即可,但是A的位数限制了操作数的寻址范围。

    (3)隐含寻址:指令字中不显式给出操作数的地址,其操作数的地址隐含在操作码或者某个寄存器中。比如说加法指令吧!一地址加法指令只给出了一个操作数的地址,而另一个操作数隐含在了ACC中,这种寻址方式有利于缩短指令的字长。

    (4)间接寻址:指令字中给出操作数所在地址的地址,间接寻址的次数是可以多次的,如果是这样的话,我们需要存储字的首位来标志间接寻址是否结束。这种寻址方式与直接寻址方式相比:
    扩大了操作数的寻址范围,假设指令字长和存储字长均为16位,如果使用直接寻址我们的寻址范围为2^A,但是如果使用间接寻址的话,我们的寻址范围可以达到2^16,当然,如果我们使用了多次间接寻址的话,寻址范围就是2^(16-1)(用一位来判断间接寻址是否结束了)。
    还有便于编制程序。
    缺点是在指令的执行阶段需要一次或者多次访存,这样会延长指令的执行时间。

    (5)寄存器寻址:地址码给出寄存器的编号,操作数在对应的寄存器里面,无需访存,从而加快了指令的执行速度,而且指令中只要给出寄存器中的编号即可(寄存器的个数本身就是有限的),所以指令字比较短。

    (6)寄存器间接寻址:寄存器中不是操作数,而是操作数的地址。

    (7)基址寻址:
    (8)变址寻址:

    (9)相对寻址:有效地址为将程序计数器PC的内容(即当前指令的地址)与指令字中的形式地址A相加而成,即:

    EA=(PC)+A

    这种寻址方式常被用于转移类指令。

    (10)堆栈寻址:既可用寄存器组(硬堆栈)来实现,也可以用主存的一部分空间(软堆栈)。
    堆栈的运行方式分为先进后出以及先进先出两种,前者要求操作数只能从一个口进行读写。
    由于堆栈指针SP中存放的是操作数的有效地址,因而他也属于一种寄存器间接寻址。而且,他也可以视为一种隐含寻址,他的操作数的地址总被隐含在寄存器SP中。

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,527
精华内容 2,610
关键字:

寻址方式