先记一句话: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 这几类寄存器。