|
Decidere quale sequenza di istruzioni eseguire tra tante sequenze alternative Dopo aver eseguito l'istruzione 0 decide se eseguire le istruzioni 11 e 12 (se E = E1) oppure le istruzioni 21 e 22 (se E = E2), oppure 31 e 32 (altrimenti) e poi continua eseguendo l'istruzione 4. Piuttosto che usare un selettore a tre uscite possiamo trasformare il diagramma di flusso nel successivo
dove cambia l'interpretazione ma non il comportamento dell'algoritmo: dopo aver eseguito l'istruzione 0 decide se eseguire le istruzioni 11 e 12 (se E = E1) oppure continuare, quindi decide se eseguire le istruzioni 21 e 22 (se E = E2) oppure 31 e 32 e poi continua eseguendo l'istruzione 4. Traduciamo in linguaggio MAC I0 ...... ' LDA E ' SUB E1 ' JEQ ISTR1 ' Se(E = E1): PC <-- ISTR1 LDA E ' SUB E2 ' JEQ ISTR2 ' Se(E = E2): PC <-- ISTR2 JMP ISTR3 ' Altrimenti: PC <-- ISTR3 ISTR1 I11 ...... ' I12 ...... ' JMP ISTR4 ' ISTR2 I21 ...... ' I22 ...... ' JMP ISTR4 ' ISTR3 I31 ...... ' I32 ...... ' ISTR4 I4 ...... ' oppure I0 ...... ' LDA E ' SUB E1 ' JEQ ISTR1 ' Se(E = E1): PC <-- ISTR1 LDA E ' SUB E2 ' JEQ ISTR2 ' Se(E = E2): PC <-- ISTR2 I31 ...... ' I32 ...... ' JMP ISTR4 ' ISTR1 I11 ...... ' I12 ...... ' JMP ISTR4 ' ISTR2 I21 ...... ' I22 ...... ' ISTR4 I4 ...... ' |
|