软件设计师 · 计算机组成原理 · CPU寄存器

PC、IR、MAR、MDR、PSW怎么区分?

CPU 寄存器题不难,但特别容易混。很多同学背了 PC、IR、MAR、MDR、PSW 的中文名,一到题目里还是分不清。老师讲这类题,一般不会让你硬背一串缩写,而是把它们放回取指、译码、执行、访存这个流程里看。

组成原理专题 软考题库编辑部 持续更新

先记一句话:PC管下一条,IR管当前这条

程序计数器 PC 保存下一条将要执行指令的地址。CPU 取指时,会根据 PC 中的地址去主存取指令;取完之后,PC 通常更新到下一条指令地址。如果遇到转移、调用、中断,PC 的内容也可能被改成新的地址。

指令寄存器 IR 保存当前正在执行或刚取出的指令。它关心的是“这条指令是什么”,不是“下一条指令在哪里”。所以题干出现“下一条指令地址”,优先想到 PC;出现“当前指令内容”,再考虑 IR。

寄存器人话理解题干常见问法
PC下一条指令地址记录下一条指令地址、转移后继续执行地址
IR当前指令内容保存正在执行的指令
MAR要访问的主存地址送往地址总线的存储单元地址
MDR主存读写的数据从存储器读出或写入存储器的数据
PSW程序状态和标志位进位、零标志、中断状态、运行状态

MAR和MDR要按“地址”和“数据”分

MAR 是 Memory Address Register,重点是 Address,也就是地址。CPU 要访问主存中的哪个单元,地址会放到 MAR 里。MDR 是 Memory Data Register,重点是 Data,也就是数据。主存读出来的数据,或者准备写入主存的数据,会经过 MDR。

做题时不要被英文缩写吓住。看到“地址”,往 MAR 靠;看到“数据”,往 MDR 靠。一个管去哪儿,一个管拿什么或写什么。

取指过程里可以这样想

PC 给出下一条指令地址。

地址送入 MAR,用来访问主存。

主存读出的指令经过 MDR。

指令装入 IR,等待译码执行。

执行结果会影响 PSW 中的某些状态位。

PSW不是普通数据寄存器

PSW 通常保存程序运行状态和条件码,例如进位标志、零标志、中断允许状态、当前运行模式等。它不是用来保存下一条指令地址,也不是用来保存当前指令本身。

考试如果问条件码、中断状态、运算结果标志,才考虑 PSW。只要题干问的是取指地址、指令内容、存储器地址或数据,就要回到 PC、IR、MAR、MDR 这几类寄存器。