其他分享
首页 > 其他分享> > 数据寻址(1)

数据寻址(1)

作者:互联网

数据寻址(1)

确定本条指令和地址码指明的真实地址。

地址码应该如何解读?

一共十种。

访存

直接寻址

把数据放到MAR,给出目标地址,直接找到。

一地址指令:

OP  |  特征  |  A

访存次数

一条指令的执行:取指令访存1次、执行指令访存1次、暂不考虑存结果,共访存2次

优点

简单,指令执行阶段仅访问一次主存,不需专门计算操作数的地址。

缺点

间接寻址

指令的地址字段不给出操作数的真正地址,给出形式地址,即操作数有效地址的地址,也就是操作数地址的地址,即EA=(A)。

一次间接寻址:指令中的A指向EA,EA再指向目标操作数。

两次间接寻址:指令中的A指向A,A再指向EA,EZ再指向目标操作数。

访存次数

一条指令的执行:取指令访存1次、执行指令访存2次、暂不考虑存结果,共访存3次。

优点:

缺点:

寄存器寻址

寄存器寻址:在指令字中直接给出操作数所在的寄存器编号,即EA = Ri ,其操作数存储在由Ri 所
表示的寄存器内。

OP |  特征  |  1001 // 这一条指令中,目标寄存器9

访存次数

优点:

缺点:

开始套娃:寄存器间接寻址

寄存器间接寻址:寄存器R,中给出的不是一个操作数,而是操作数所在主存单元的地址,
即EA=(R)。

访存次数

隐含寻址

优点:

缺点:

立即寻址

OP  |  #  |  0…011		//结尾的00…011就是3就是我们要的操作数,#就是它的特征,说明是立即寻址

访存次数

优点:

缺点:

堆栈寻址

例:出栈取出SP中的R0、R1求和,再压栈放回来。

上方为寄存器中原内容,下方左边是汇编语言执行,能看懂就不再赘述。

注:

  1. 栈顶在小地址方向

    出栈:
    (Msp) → ACC
    (SP)+1 → SP
    
    入栈:
    (SP)-1 → SP
    (Y) → Msp
    
  2. 栈顶在大地址方向

    出栈:
    (Msp) → ACC
    (SP)-1 → SP
    
    入栈:
    (SP)+1 → SP
    (Y) → Msp
    

硬堆栈、软堆栈

硬堆栈 软堆栈
含义 使用专用的寄存器作堆栈 在主存中划分区域用于堆栈
访存 当然一次都不访存 每一次pop、push都要访存
速度比较 速度快 速度慢
成本 成本高 成本低(故一般使用软的)

标签:操作数,访存,地址,寻址,指令,寄存器,数据
来源: https://www.cnblogs.com/tupo/p/15658918.html