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