【问题标题】:difference between memory address register(MAR) and program counter(PC)?内存地址寄存器(MAR)和程序计数器(PC)的区别?
【发布时间】:2012-06-08 05:38:25
【问题描述】:

内存地址寄存器(MAR)和程序计数器(PC)有何不同?

【问题讨论】:

  • 你指的是什么处理器/微控制器?
  • 我认为是 w.r.t.英特尔 8085。

标签: microcontroller microprocessors


【解决方案1】:

我在一本书里读到过

PC 只保存指令的地址

PC 在将指令地址传递给 MAR 后立即添加一个数字

MAR 在寻址周期中保存指令的地址

在后续提取周期中保存数据的地址

这些是差异的一部分(可能还有其他差异)

【讨论】:

    【解决方案2】:

    程序计数器 (PC) 存储当前指令执行后要从内存中取出的下一条指令的地址。

    这个来自PC的地址被加载到地址寄存器(AR)中:AR<--PC

    来自地址寄存器(AR)给出的内存位置的指令被加载到指令寄存器(IR)中:IR<--M[AR]

    程序计数器递增到下一条指令的地址:PC<--PC+1

    【讨论】:

      【解决方案3】:

      PC:程序计数器(PC)保存下一条要执行或解码的指令的地址。

      IR:指令寄存器(IR)保存当前正在执行或解码的指令。

      MAR:内存地址寄存器(MAR)保存内存中位置的地址,其中包含当前正在执行的指令所需的数据。 只需 MAR 指向包含所需数据的内存位置。

      【讨论】:

      【解决方案4】:

      程序计数器 程序计数器保存下一条要被提取-解码-执行的指令的地址。这将在当前指令被解码时自动递增

      内存地址寄存器 (MAR) 保存当前正在执行的指令的地址。它指向内存中所需指令所在的相关位置(在此阶段,地址只是从程序计数器中复制)。

      【讨论】:

        【解决方案5】:

        程序计数器使用逻辑地址(程序生成的虚拟地址),而地址寄存器使用物理地址(实际的真实内存地址)。这是主要区别。

        【讨论】:

          【解决方案6】:

          内存地址寄存器 (MAR) 保存从其中提取数据以带入 CPU 的寄存器组件的地址位置。

          程序计数器 (PC) 保存 NEXT 指令的位置(存储在内存中的所有内容都有一个地址)。希望这有帮助

          【讨论】:

            【解决方案7】:

            不同之处在于程序计数器指向下一条要获取/执行的指令,而内存地址寄存器指向正在运行的程序将获取一些数据(不是指令)的内存位置。

            【讨论】:

              【解决方案8】:

              程序计数器 (PC) 是 CPU 正在执行的当前指令的地址。内存地址寄存器 (MAR) 可以包含被加载或存储指令访问的数据的地址。

              【讨论】:

              • PC 立即指向要获取的下一条指令,因此说它持有 CPU 正在执行的当前指令的地址是错误的。
              猜你喜欢
              • 2018-11-11
              • 2021-08-22
              • 2014-06-07
              • 2013-06-17
              • 2018-10-22
              • 2014-03-05
              • 2020-07-03
              • 2011-05-25
              • 2017-07-15
              相关资源
              最近更新 更多