写出MOV R2,(PC)+的取址流程 不要中文
时间: 2024-02-16 11:02:22 浏览: 61
MOV R2,(PC)+ 的取址流程如下:
FT: M->IR PC+1->PC
M1: PC->MAR M->MAR MAR+1->PC M->MDR
M2: MDR->MAR M->MAR M->MDR
DT: 无操作
ET: 无操作
其中,M1 表示第一个内存访问(Memory Access),M2 表示第二个内存访问。解释如下:
FT: 从内存中取出指令,存储在指令寄存器 IR 中。PC 加 1,指向下一条指令的地址。
M1: 将 PC 中的值存储到内存地址寄存器 MAR 中,从内存中取出 MAR 中存储的地址中存储的值,存储到 MDR 中。MAR 加 1,指向下一个内存地址,将 PC 中的值存储到 MDR 中。
M2: 将 MDR 中存储的值存储到内存地址寄存器 MAR 中,MAR 中的值加 1,指向下一个内存地址。从内存中取出 MAR 中存储的地址中存储的值,存储到 MDR 中。将 MDR 中存储的值存储到 R2 中。
DT: 无操作。
ET: 无操作。
相关问题
指令:MOV R2,(PC)+;指令流程:FT:M->IR PC+1->PC ST:PC->MAR M->MDR->C PC+1->PC ET:C->R2 PC->MAR
好的,我已经学习了这个指令和指令流程。现在我来写出它的指令流程:
1. 从PC寄存器中读取当前指令的地址,将其存储到MAR寄存器中。同时,PC寄存器的值加1,以便执行下一条指令。
2. 从MAR寄存器指定的内存地址中读取指令代码,将其存储到MDR寄存器中。假设指令代码是MOV R2,(PC)+。
3. 将MDR寄存器中的指令代码移动到IR寄存器中,以便对其进行解码和执行。
4. 将PC寄存器的值保存到MAR寄存器中,以便从下一个内存地址读取数据。
5. 从MAR寄存器指定的内存地址中读取数据,将其存储到MDR寄存器中。
6. 将MDR寄存器中的数据移动到C寄存器中,以便对其进行操作。假设从(PC)+指向的内存地址中读取的数据是FT。
7. 将C寄存器的值移动到R2寄存器中,以便对其进行后续操作。
8. 将PC寄存器的值加1,以便执行下一条指令。
整个指令执行完毕后,R2寄存器中存储了从(PC)+指向的内存地址中读取的数据,同时PC寄存器的值被更新为下一条指令的地址。这个指令通常被用于读取程序中的常量。
写出下列指令在模型机上的读取和执行流程,并指出该指令中源操作数的寻址方式分别是什么? (1)MOV (R0)+, R1 FT0 PC—>MAR FT1 M—>MDR—>IR, PC+1—>PC ST0 R1—>C DT0 R0—>MAR DT1 R0+1—>Z DT2 Z—>R0 ET0 C—>MDR ET1 MDR—>M (2)INC -(R2)
(1)MOV (R0)+, R1
读取流程:
1. PC中存放下一条指令的地址,将PC中的地址送入MAR中,MAR中存放地址为PC的值。
2. 将MAR中的地址送入存储器M的地址输入端,进行地址译码和访存,将存储器M中MAR地址指向的单元中的指令代码送入MDR中。
3. 将MDR中的指令代码送入IR中,指令译码后,根据指令中的寻址方式,计算源操作数的地址。
4. 将寄存器R0中的值送入MAR中,MAR中存放地址为R0的值。
5. 将MAR中的地址送入存储器M的地址输入端,进行地址译码和访存,将存储器M中MAR地址指向的单元中的值送入MDR中。
6. 将MDR中的值送入C中。
7. 将R0中的值加1,结果存回R0中。
执行流程:
1. 将C中的值送入MDR中。
2. 将MDR中的值送入MAR中,MAR中存放地址为R0的值。
3. 将R1中的值送入MDR中。
4. 将MDR中的值存入MAR地址指向的单元中。
源操作数的寻址方式:寄存器间接寻址
(2)INC -(R2)
读取流程:
1. PC中存放下一条指令的地址,将PC中的地址送入MAR中,MAR中存放地址为PC的值。
2. 将MAR中的地址送入存储器M的地址输入端,进行地址译码和访存,将存储器M中MAR地址指向的单元中的指令代码送入MDR中。
3. 将MDR中的指令代码送入IR中,指令译码后,根据指令中的寻址方式,计算源操作数的地址。
4. 将寄存器R2中的值送入MAR中,MAR中存放地址为R2的值减1后的结果。
5. 将MAR中的地址送入存储器M的地址输入端,进行地址译码和访存,将存储器M中MAR地址指向的单元中的值送入MDR中。
6. 将MDR中的值送入C中。
执行流程:
1. C中的值加1,结果存回内存地址为R2的值减1后的结果的单元中。
2. 将R2中的值减1,结果存回R2中。
源操作数的寻址方式:自动间接寻址
阅读全文