目录
1. 双操作数指令
既要目的地址,又要目的操作数。
若已取得目的操作数,则必已取得目的地址。
(1)源周期
与传送指令的源周期一样。
(2)目的周期
双操作数指令的目的周期需要获得目的操作数,因此其流程类似于传送指令的源周期。
(记忆)获取操作数的前三个节拍:
- 给出地址
- 去访存 ——获得操作数
- 修改寄存器
(3)执行周期
此时的源操作数:
- 在 Ri 中
- 在 C 中
此时的目的地址或目的操作数:
- 目的地址在 Rj 中或者在 MAR 中
- 目的操作数 Rj 中或者在 D 中
OP 代表需要完成的运算。
- 例题
2. 单操作数指令(自学)
- 例题
3. 转移指令 JMP 和返回指令 RST(自学)
没有 ST 和 DT,在 ET 中获得转移地址或返回地址。
NJ —— 不满足转移条件,J —— 满足转移条件
(1)不进行转移时 —— NJ
非 PC 型:转移地址中给出的寄存器不是 PC,此时后继指令位于当前转移型指令后,所以 PC 当前值就是后继指令地址,在 ET 中执行 PC → MAR 即可。
PC 型:转移地址中给出的寄存器是 PC,则紧跟转移型指令之后的主存单元已被用来存放一个立即数,下一个存储单元的内容才是转移指令的后继指令,所以在 ET 中 PC 保存的地址码需要再次加1,才能正确定位到这条指令的后继指令。
这个立即数可能是相对于 PC 的偏移量或者转移目标地址。
(2)进行转移时 —— J
- 第一题
- 第二题(易错)
4. 转子指令 JSR(自学)
更正:把暂存器改为 D 。在 ST 或 DT 形成子程序入口地址都行,但不要写错了暂存器。
(1)不进行转子时 —— NJSR
顺序执行。
(2)进行转子时 —— JSR
DT期间:
对于非寄存器寻址, 将形成的子程序入口地址送入D中暂存。
ET期间:
- 压栈保存返回地址
- 将子程序入口地址送入PC和MAR