【计算机组成原理·考研】指令的寻址方式

指寻找指令或操作数的有效地址的方式。

Ps
并非操作数真实地址的地址,称为形式地址,用A表示。
操作数在存储器中的真实地址,称为有效地址,用EA表示。
(A)表示A的数值,A可以是寄存器编号、内存地址。则(A)就可以表示为寄存器中的数值或相应内存单元的数值。

1.分类

1.1 指令寻址

1.1.1 概述

寻找下一条将要执行的指令的地址。

1.1.2 寻址方式
顺序寻址

通过程序计数器(PC)+1(指1个指令字长),来自动形成下一条指令的地址。

跳跃寻址
  1. 下条指令的地址将不会由PC给出,而是由本条指令给出下条指令地址的计算方式。
  2. 是否跳跃取决于状态寄存器(PSW)和操作数的控制。
  3. 跳跃寻址的下条指令的地址分为绝对地址(由标识符直接得到)和相对地址(相对于当前指令地址的偏移量)。
  4. 跳跃寻址的结果:当前指令修改PC值,因此下条指令地址最终还是由PC给出。

1.2 数据寻址

1.2.1 概述

寻址操作数的有效地址。
image.png
注意:由于数据寻址的方式比较多,因此我们通常在指令字中增设一个字段(寻址特征),用于指明操作数的寻址方式。

1.2.2 寻址方式
1.2.2.1 隐含寻址

【计算机组成原理·考研】指令的寻址方式_第1张图片

说明

此类型的指令不显式的指定操作数的地址,而是在指令中隐含操作数的地址。

栗子

单地址指令就只给出第一操作数的地址,而不不显式的指出第二操作数的地址,并往往以ACC作为第二操作数地址。

优缺点

优点:有利于缩短指令字长。
缺点:需要增加存储操作数或隐含地址的硬件。


1.2.2.2 立即(数)寻址

【计算机组成原理·考研】指令的寻址方式_第2张图片

说明

该类型的指令中的地址码字段给出的不是操作数的地址,而是操作数本身(立即数),采用补码表示。

优缺点

优点:指令执行阶段不会访问主存,提高了指令的执行速度。
缺点:地址段的位数限制了立即数的范围。


1.2.2.3 直接寻址

【计算机组成原理·考研】指令的寻址方式_第3张图片

说明

指令字中的形式地址A同样是操作数的真实地址EA( A = EA )。

优缺点

优点:指令执行阶段仅访问一次主存,且无需计算操作数的地址。
缺点:A的位数限制了指令操作数的寻址范围,且操作数的地址不易修改。


1.2.2.4 间接寻址

【计算机组成原理·考研】指令的寻址方式_第4张图片

说明

指令的地址字段并非操作数的真实地址,而是 操作数的真实地址 所在存储单元 的 地址( (A) = EA )。
间接寻址可以是一次间接寻址,也可以是多次间接寻址。

优缺点

优点:

  1. 扩大了寻址范围。(EA的位数 > A的位数)
  2. 便于编制程序。(子程序返回较方便)

缺点
指令执行阶段需要多次访存。(一次间接寻址就需要两次访存)

Ps
由于访问速度过慢,这种寻址方式并不常用。因此一般问到扩大寻址范围时,往往考虑寄存器间接寻址的方式。


1.2.2.5 寄存器寻址

【计算机组成原理·考研】指令的寻址方式_第5张图片

说明

指令字中直接给出操作数所在的寄存器的编号( EA = Ri ),即操作数存放在Ri所指向的寄存器中。

优缺点

优点:指令执行阶段不访问主存,只访存寄存器。由于寄存器数量少,因此地址码字段长度短,因而使得指令字短,从而使得指令执行速度快。
缺点:寄存器造价高且数量有限。


1.2.2.6 寄存器间接寻址

【计算机组成原理·考研】指令的寻址方式_第6张图片

说明

在上面寄存器寻址的基础上,寄存器Ri存储的不是操作数本身,而是操作数所在主存单元的地址( Ri = EA )。

优缺点

优点:相比于一般的间接寻址,其速度较快。
缺点:指令执行阶段仍需访问主存。


1.2.2.7 相对寻址

【计算机组成原理·考研】指令的寻址方式_第7张图片

说明
  • 将PC中的内容与形式地址A相加得到操作数的有效地址。( (PC) + A = EA )
  • A表示相对于当前PC值(下一条指令的地址)的偏移量,可正可负,用补码表示。

栗子
比如指令字长为2B,当执行指令 JMP A(其地址为X)时,此时PC会加“1”(1个指令字长),变成 X + 2,完成该指令后,则PC的值会继续+A(偏移量),因此,最终跳转地址为 X + 2 + A。

优缺点

优点:

  1. 操作数地址不固定,并随PC值的变化而变化。
  2. 操作数地址与指令地址总是相差一个固定值,因此便于程序浮动。

1.2.8 基址寻址

【计算机组成原理·考研】指令的寻址方式_第8张图片

说明
  • 将CPU中的基址寄存器(BR)中的值加上指令字中的形式地址A形成操作数的有效地址。( (BR) + A = EA )
  • 基址寄存器既可采用专用寄存器,也可采用通用寄存器。

BR是面向操作系统的,其内容手操作系统或管理程序的控制。
程序执行的过程中,BR中的内容保持不变(作为基地址),但形式地址可变(作为偏移量)。
用户可决定采用哪个通用寄存器作为基址寄存器,但内容仍旧操作系统决定。

优缺点

优点:

  1. 扩大了寻址范围。(BR的位数 > 形式地址A的位数 )
  2. 用户无需考虑自己的程序存在于主内的哪块区域,因而有利于设计多道程序,同时也有助于编制浮动程序。

缺点:偏移量(形式地址A)的位数较少。


1.2.9 变址寻址

【计算机组成原理·考研】指令的寻址方式_第9张图片

说明
  • 变址寄存器(IX)中的内容与形式地址A相加形成操作数的有效地址。( (IX) + A = EA )
  • 变址寄存器既可采用专用寄存器,也可采用通用寄存器。

IX是面向用户的,在程序执行过程中,其内容(偏移量)可由用户改变,但形式地址A(基地址)保持不变。

优缺点

优点:

  1. 扩大了寻址范围。(IX的位数 > 形式地址A的位数 )
  2. 适合编制循环程序。(可设定A为数组首地址,通过不断改变IX的内容,可以很容易形成数组中任意一个元素的地址,且IX位数足以表示整个存储空间)。
基址寻址与变址寻址的比较
项目 基址寻址 变址寻址
面向群体 操作系统 用户
寄存器可编程性 BR的内容由操作系统或管理程序确定 IX 的内容可自由地被用户改写
寻址过程中值的变化 BR内容保持不变,A自由变化 IX内容自由变换,A保持不变
用途 解决程序逻辑空间与存储器物理空间的无关性 编址循环程序,比如数组遍历

1.2.2.10 堆栈编址
说明

采用堆栈结构的计算机系统中,大部分指令表面上表现为无操作数指令的形式,其实,它们都隐含使用了SP。

堆栈是存储器/专用寄存器组中的一块特定的、按后进先出(LIFO)原则管理的存储区,该存储区中读/写单元的地址由一个特定的寄存器给出,该寄存器称为堆栈指针(SP)。
堆栈可分为硬堆栈与软堆栈。

1.2.3 各寻址方式的比较
寻址方式 有效地址 访存次数
隐含寻址 程序指定 0
立即寻址 A即是操作数 0
直接寻址 A = EA 1
一次间接寻址 (A) = EA 2
寄存器寻址 A = Ri 0
寄存器一次间接寻址 (Ri) = EA 1
相对寻址 (PC) + A = EA 1
基址寻址 (BR) + A = EA 1
变址寻址 (IX) + A = EA 1
堆栈寻址 由SP指出 0

你可能感兴趣的:(考研,计算机组成原理,考研,计算机外设,汇编)