内存寻址模式与寄存器寻址模式的区别

2024年8月28日 | 阅读 7 分钟

要学习内存寻址模式和寄存器寻址模式,我们首先需要了解寻址模式。在此之后,我们就能轻松理解内存寻址模式和寄存器寻址模式。寻址模式的描述如下:

寻址模式

寻址模式可以被描述为操作的领域,它用于指定我们想要执行的各种操作。通过一些数据,操作将被执行。在寻址模式中,内存或计算机寄存器用于存储数据。根据寻址模式指令,将在实际引用操作数之前,通过寻址模式规定的规则来决定程序执行时选择操作数的方式。指令的地址字段将被修改或解释。

换句话说,寻址模式可以被描述为用于指定操作数的一种机制。操作数被定义为对给定内存位置的引用或指令的一部分。操作数的值或操作数的地址可以被定义为包含在指令代码中的信息。根据 CPU 组织类型,寻址模式高度依赖。CPU 组织主要有三种类型,如下所述:

  • 单累加器组织:累加器寄存器在 CPU 组织中被隐式使用,以处理程序的所有指令。这些指令的结果将存储在累加器中。
  • 堆栈组织:堆栈是一种存储结构,用于以一种方式存储信息,即最后存储的项将是第一个检索的项。堆栈组织依赖于 LIFO。在大多数 CPU 中,LIFO 被认为是访问方法中最流行的。
  • 通用寄存器组织:通用组织可以被描述为一种组织,其中我们在 CPU 组织中使用多个通用寄存器来代替单个累加器寄存器。在此组织中,指令格式通过两个或三个地址字段来表示。

寻址模式主要有两个目的。这些目的也被称为寻址模式的优点,如下所述:

  • 寻址模式为用户提供了各种类型的功能,以提供编程的灵活性。这些功能包括程序重定位、内存指针、数据索引和循环控制计数器。
  • 借助寻址模式,指令的地址字段中的位数可以减少。

例如,机器需要知道如何获取操作数,以便它能够借助操作数来执行任务。有一个词称为有效地址,用于定义存储在内存中的操作数的地址。我们可以通过多种方法直接从寄存器中获取或定义这些类型操作数的有效地址。这些类型的方法被称为“寻址模式”。

高级语言中,程序员可以轻松描述变量以及将在变量上执行的操作。因此,借助高级语言,程序员通常编写代码。之后,低级指令用于生成计算机代码。低级指令包含操作码和操作数。寻址模式无法对操作码选项执行任何操作。寻址模式仅专注于呈现指令中存在的操作码的地址。

内存寻址模式

当数据在内存中时,我们只能通过内存寻址模式访问数据。EA(有效地址)始终是内存地址。在操作码中,保存的信息始终是结果或操作数的值。在这里,微处理器能够通过执行存储在内存中的指令序列来实现特定的任务。

寄存器寻址模式中,操作数将存储在寄存器中,而 CPU(中央处理单元)包含该寄存器。借助寄存器,我们将访问将在寄存器中处理的信息。在此模式下,指令将包含存储操作数的寄存器的地址。寄存器寻址模式包含不同的基地址类型。因此,目标段基址将由基址寄存器持有。

内存寻址模式与寄存器寻址模式的区别如下:

内存寻址模式寄存器寻址模式
在此模式下,将访问静态变量。在内存寻址模式中,操作数的值通常由内存包含。借助指令本身,将给出操作数的地址。内存寻址模式能够有效地利用内存地址。此模式需要一次内存引用。这种模式称为直接寻址模式在寄存器寻址模式中,操作数的值通常由寄存器包含。借助指令,提供寄存器编号。操作数可以通过指令中存在的寄存器编号来获取。这种模式称为寄存器模式
在此模式下,将实现指针。通过内存,有效地址存储在此模式中。通过指令中指定的内存地址,将提供 EA 的地址。此模式需要两次引用,第一次用于获取有效地址,第二次用于读取或写入数据。此模式称为间接寻址模式操作数的地址由寄存器包含。指令中给出的寄存器内容将被传递到有效地址。借助此模式,我们能够充分利用寄存器的优势。此模式称为寄存器间接模式
EA(有效地址)可以通过将指令的地址部分与基址寄存器的内容相加来获得。通常假设基址寄存器包含基地址,并且相对于基地址的偏移量由指令的地址字段给出。此模式称为基址寄存器寻址模式假设我们有一个包含大量数据的表。如果我们想逐个访问所有值,在这种情况下,我们需要一个包含基地址的寄存器,或者需要某种可以递减程序计数器的方法。在这种情况下,寄存器会递减。因此,此模式是寄存器寻址模式。此模式称为自动递减模式
在此模式下,将实现数组。数组元素将以连续单元格的形式存储在内存中。在此模式下,索引可以引用数组的元素。通过将索引寄存器的内容添加到指令的地址部分,可以获得有效地址。借助索引模式,我们可以访问其元素存储在连续内存位置中的数组。此模式需要两个参数来访问数组元素,即基地址和索引。这里,基地址是第一个元素,它能够存储数组的地址。索引是第二个元素,用于指示数组元素的位置。此模式称为索引寻址模式假设我们有一个包含大量数据的表。如果我们想逐个访问所有值,在这种情况下,我们需要一个包含基地址的寄存器,或者需要某种可以递增程序计数器的方法。在这种情况下,寄存器会递增。此模式称为自动递增模式
通过将程序计数器的内容添加到指令的地址部分,可以获得有效地址。在这种情况下,此地址部分通常表示一个符号数,该符号数可以是负数或正数。此模式称为相对寻址模式寄存器寻址模式用于访问常量。常量值通过指令初始化到寄存器。借助指令的地址字段,数据在此模式下保存。因此,有效地址不需要在此模式下访问数据。我们可以将此模式用作源,但永远不能将其用作目标,因为常量没有存储容量,而目标始终需要存储空间。这种技术在我们的代码或程序中非常有用。此模式称为立即寻址模式