题8
题目
Q:( ) 便于处理数组问题。
A. 间接寻址
B. 变址寻址
C. 相对寻址
D. 基址寻址
分析
A:数组问题我们理解为,取出数组中某个元素的过程,要想要O1取出某个链式的数据结构,我们首先要知道这个数组的起始地址,然后通过索引,也就是下标,就可以O1直接拿到这个数据
这样的理解中,三种偏移寻址都是这个过程
三者主要区别在于如何定义,这个起始地址
下面的相关论述摘自
变址寻址:有效地址 EA 等于指令字中的形式地址与变址寄存器 IX 的内容相加之和,即 EA=(IX)+A,其中 IX 可为变址寄存器(专用),也可用通用寄存器作为变址寄存器。
注意:与基址寄存器类似,只是寄存器不同而已,变址寄存器是面向用户的,在程序执行过程中,变址寄存器中的内容可由用户改变(IX 作为偏移量),形式地址 A 不变(作为基地址)
实际应用举例:
首先看个例子,是一个 for 循环累加,对于循环操作每一条指令重复性的操作都是使用了单独一条指令,如果循环的次数更多呢?此时就会造成指令数冗余,如何解决呢?可以采用变址寻址。

通过增加一个变址寄存器即可存储对应访问的数组偏移量,接着使用变址寻址指令后,地址码的值位对应数组的首位地址,此时使用首位地址 + 偏移量,即可确定数组元素的位置,接着搭配跳转指令,就可以完成循环了!

变址寻址的作用:在数组处理过程中,可以设定 A 为数组的首地址,不断改变变址寄存器 IX 的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。
变址寄存器中的值是我们普通程序员可以采用指令的方式去进行修改的,这一点与基址寄存器不一样。
解
B
变址寻址便于处理数组问题。基址寻址与变址寻址的区别见下表。
| 基址寻址 | 变址寻址 | |
|---|---|---|
| 有效地址 | EA=BR+A | EA=IX+A |
| 访存次数 | 1 | 1 |
| 寄存器内容 | 由操作系统或管理程序确定 | 由用户设定 |
| 程序执行过程中值可变否 | 不可变 | 可变 |
| 特点 | 有利于多道程序设计和编制浮动程序 | 有利于处理数组问题和编制循环程序 |