本文共 2218 字,大约阅读时间需要 7 分钟。
寻址方式
是指寻找指令或操作数有效地址
的方式,也就是确定本条指令的数据地址
和下一条待执行指令的地址
的方式。寻址分为指令寻址
和数据寻址
。地址码字段并不代表操作数的真实地址,这种地址称为形式地址 (A),形式地址结合寻址方式可以计算出操作数在存储器中的真实地址,这种地址称为有效地址 (EA)
。EA=(A)
表示有效地址为地址 A 中的数值。顺序寻址和跳跃寻址
两种方式。程序计数器(PC)
加 1 (个指令字长),自动形成
下一条指令的地址。不由程序计数器给出,而由本条指令给出下一条指令地址
的计算方式。相对地址
指相对于当前指令地址的偏移量
;跳跃的结果是当前指令修改 PC 值,所以下一条指令仍是由 PC 给出。隐含寻址、立即数寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、相对寻址、基址寻址、变址寻址和堆栈寻址
,共 10
种方式。隐含操作数的地址
。如单地址指令。 隐含寻址的优点是有利于缩短指令字长
,缺点是需增加存储操作数或隐含地址的硬件
。 操作数本身,即立即数
,通常用补码表示。执行阶段无需访存
,指令执行时间缩短
;缺点是立即数的位数限制了数的范围
。 真实地址
,即 EA=A
。只需一次访存
,不需要专门计算操作数的地址;缺点就是 A 的位数限制了操作数的寻址范围,操作数的地址不易修改
。 地址字段
给出的是操作数有效地址所在的存储单元的地址,即是操作数地址的地址
,EA=(A)。间接寻址可以是一次间接寻址,也可以是多次间接寻址。扩大寻址范围
;缺点就是指令执行时需要多次访存
,由于访存速度慢,因此这种寻址方式不常用。 EA = Ri
。不访问主存,访问寄存器
,因此缩短指令字长
,提高执行速度;缺点是寄存器价格昂贵
,寄存器数量有限
。 EA=(Ri)
。速度快
,但在指令执行阶段需要访存
。 程序计数器的内容加上指令格式种的形式地址形成操作数的有效地址,即 EA=(PC)+A
,A
相对于当前指令地址的位移量
,可正可负,补码
表示,操作数寻址范围由 A 决定
。 优点是操作数的地址不是固定的,随 PC值变化而变化,且与指令地址之间总是相差一个固定值,因此利于程序浮动
;相对寻址广泛用于转移指令
。 将 CPU 种基址寄存器(BR)的内容加上指令格式种的形式地址 A 而形成操作数的有效地址
,即EA = (BR) + A
。基址寄存器可以是专用寄存器,也可以是通用寄存器。基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定
,主要用于解决程序逻辑空间和存储器物理空间的无关性;在程序执行过程种,基址寄存器种的内容不变,形式地址可变
。采用通用寄存器作基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但内容仍由操作系统确定。扩大寻址范围
,用户不必考虑自己的程序存于主存的哪个空间区域,利于多道程序设计,并可以用于编制浮动程序,但偏移量位数较短
。 有效地址 EA 等于指令字种的形式地址 A 与变址寄存器 IX 的内容之和,即 EA = (IX) + A
,寄存器的选择同基址寻址方式。变址寄存器是面向用户的,在程序执行过程种,变址寄存器种的内容可由用户改变,形式地址 A 不变,因此与上面的基址寻址方式相反,用寄存器的值作为偏移量,形式地址 A 作为基址
。扩大寻址范围
,适合编制循环程序
,偏移量位数足够表示整个存储空间。 多道程序或数据分配存储空间
,变址寻址主要用于处理数组问题
。特定的寄存器
给出,该寄存器称为堆栈指针(SP)
。堆栈分为硬堆栈和软堆栈
。寄存器
堆栈称为硬堆栈,成本较高,不适合做大容量堆栈;从主存中划出一段区域
用作堆栈,比较经济,这种方式的堆栈称为软堆栈。表现为无操作数指令形式
,因为操作数地址都隐含使用了 SP。通常情况,在读/写堆栈中的一个单元的前后件都伴有自动完成 SP 内容的增量和减量的操作。 转载地址:http://kmqgn.baihongyu.com/