Fluxograma do funcionamento do Computador IAS - Instruções de Transferência

flowchart TB subgraph _fetch_cycle_ [Fetch Cycle] START((Start)):::greenClass --> B{"Is next instruction in IBR?"} B --> |"Yes No memory access required"| F("IR ← IBR(0:7) MAR ← IBR(8:19)") F --> I B --> |No| C("MAR ← PC") C --> D("MBR ← M(MAR)") D --> E{"Left instruction required?"} E --> |No| H("IR ← MBR(20:27) MAR ← MBR(28:39)") E --> |Yes| G("IBR ← MBR(20:39) IR ← MBR(0:7) MAR ← MBR(8:19)") H --> I("PC ← PC + 1 IBR ← 0") end subgraph _decode_ [ ] I --> DECODE G --> DECODE DECODE{{"Decode instruction in IR"}}:::orangeClass style _decode_ fill:transparent,stroke:transparent direction TB end subgraph _execution_cycle_ [Execution Cycle] DECODE --> |"LOAD MQ Opcode: 00001010"| LOAD_MQ subgraph LOAD_MQ ["LOAD MQ"] LOAD_MQ1("AC ← MQ"):::clickable end DECODE --> |"LOAD MQ,M(X) Opcode: 00001001"| LOAD_MQ_MX subgraph LOAD_MQ_MX ["LOAD MQ,M(X)"] LOAD_MQ_MX1("MBR ← M(MAR)"):::clickable LOAD_MQ_MX2("MQ ← MBR"):::clickable LOAD_MQ_MX1 --> LOAD_MQ_MX2 end DECODE --> |"STOR M(X) Opcode: 00100001"| STOR_MX subgraph STOR_MX ["STOR M(X)"] STOR_MX1("MBR ← AC"):::clickable STOR_MX2("M(MAR) ← MBR"):::clickable STOR_MX1 --> STOR_MX2 end DECODE --> |"LOAD M(X) Opcode: 00000001"| LOAD_MX subgraph LOAD_MX ["LOAD M(X)"] LOAD_MX1("MBR ← M(MAR)"):::clickable LOAD_MX2("AC ← MBR"):::clickable LOAD_MX1 --> LOAD_MX2 end DECODE --> |"LOAD -M(X) Opcode: 00000010"| LOAD_MINUS_MX subgraph LOAD_MINUS_MX ["LOAD -M(X)"] LOAD_MINUS_MX1("MBR ← M(MAR)"):::clickable LOAD_MINUS_MX2("MBR(0) ← MBR(0) ^ 1"):::clickable LOAD_MINUS_MX3("AC ← MBR"):::clickable LOAD_MINUS_MX1 --> LOAD_MINUS_MX2 --> LOAD_MINUS_MX3 end DECODE --> |"LOAD |M(X)| Opcode: 00000011"| LOAD_ABS_MX subgraph LOAD_ABS_MX ["LOAD |M(X)|"] LOAD_ABS_MX1("MBR ← M(MAR)"):::clickable LOAD_ABS_MX2("MBR(0) ← 0"):::clickable LOAD_ABS_MX3("AC ← MBR"):::clickable LOAD_ABS_MX1 --> LOAD_ABS_MX2 --> LOAD_ABS_MX3 end DECODE --> |"LOAD -|M(X)| Opcode: 00000100"| LOAD_MINUS_ABS_MX subgraph LOAD_MINUS_ABS_MX ["LOAD -|M(X)|"] LOAD_MINUS_ABS_MX1("MBR ← M(MAR)"):::clickable LOAD_MINUS_ABS_MX2("MBR(0) ← 1"):::clickable LOAD_MINUS_ABS_MX3("AC ← MBR"):::clickable LOAD_MINUS_ABS_MX1 --> LOAD_MINUS_ABS_MX2 --> LOAD_MINUS_ABS_MX3 end end subgraph _end_ [End] style _end_ fill:transparent,stroke:transparent END(("Go back to Start")):::greenClass LOAD_MQ --- END LOAD_MQ_MX --- END STOR_MX --- END LOAD_MX --- END LOAD_MINUS_MX --- END LOAD_ABS_MX --- END LOAD_MINUS_ABS_MX --- END direction TB end classDef greenClass fill:#008000 classDef orangeClass fill:#FF6347 classDef redFontClass color:#FF0000 classDef clickable cursor:pointer,stroke:#3366ff,stroke-width:2px