寻址方式的类型有哪些?
指令的操作数可以位于主存储器中,也可以位于CPU寄存器中。如果操作数放在主存储器中,则指令在操作数字段中提供位置地址。有多种方法用于指定操作数地址。在指令中指定操作数地址的不同方法/模式称为寻址方式。
寻址方式的类型
寻址方式有多种类型,如下所示:
隐含寻址方式 - 在这种模式下,操作数隐含在指令的定义中。例如,指令“对累加器求补”是隐含寻址方式指令,因为累加器寄存器中的操作数隐含在指令的定义中。所有使用累加器的寄存器引用指令都是隐含寻址方式指令。
带模式字段的指令格式
操作码 | 模式 | 地址 |
立即寻址方式 - 在这种模式下,操作数在指令本身中指定。换句话说,立即寻址方式指令具有操作数字段而不是地址字段。操作数字段包含与指令中确定的操作一起使用的实际操作数。立即寻址方式指令对于将寄存器初始化为常数值很有用。
寄存器寻址方式 - 在这种模式下,操作数位于 CPU 内部的寄存器中。特定寄存器从指令中的寄存器字段中选择。k 位字段可以确定 2k 个寄存器中的任何一个。
寄存器间接寻址方式 - 在这种模式下,指令定义 CPU 中的一个寄存器,其内容提供内存中操作数的地址。换句话说,选定的寄存器包含操作数的地址而不是操作数本身。
然后,对寄存器的引用等效于指定内存地址。寄存器间接寻址方式指令的优点是,指令的地址字段使用较少的位来选择寄存器,而不是直接指定内存地址所需的位数。
自动增量或自动减量寻址方式 - 这类似于寄存器间接寻址方式,只是在使用寄存器值访问内存后(或之前)会增加或减少寄存器。当存储在寄存器中的地址定义内存中的数据表时,需要在每次访问表后增加或减少寄存器。这可以通过使用增量或减量指令来实现。
直接寻址方式 - 在这种模式下,有效地址等于指令的地址部分。操作数驻留在内存中,其地址由指令的地址字段直接给出。在分支类型指令中,地址字段指定实际的分支地址。
间接寻址方式 - 在这种模式下,指令的地址字段给出内存中存储有效地址的地址。控制单元从内存中提取指令,并使用其地址部分再次访问内存以读取有效地址。
索引寻址方式 - 在这种模式下,将索引寄存器的内容添加到指令的地址部分以获得有效地址。索引寄存器是一个包含索引值的特殊 CPU 寄存器。指令的地址字段定义内存中数据数组的起始地址。