-
Notifications
You must be signed in to change notification settings - Fork 8
Esempi svolti
MircoT edited this page Jan 11, 2022
·
3 revisions
ORG 100
LDA X
BSA CHK
INC
HLT
X, AND Y
Y, HEX 200
CHK, HEX 0
CIR
SNA
BUN CHK I
ADD X
BUN CHK I
END
ORG 100 | Contenuto | |
---|---|---|
100 | LDA X | |
101 | BSA CHK | |
102 | INC | |
103 | HLT | |
104 | X, AND Y | 0000 0001 0000 0101 |
105 | Y, HEX 200 | |
106 | CHK, HEX 0 | |
107 | CIR | |
108 | SNA | |
109 | BUN CHK I | |
10A | ADD X | |
10B | BUN CHK I | |
END |
Soluzione esercizio 1 ❓
Indirizzo | Contenuto di AC | Contenuto E | |
---|---|---|---|
100 | Si carica in AC X, che ha il contenuto che vedete in tabella. Il contenuto è dato dall'operatore AND (OPR = 000, quindi dal secondo al quarto bit), dall'indirizzo Y (105 in hex, che va a formare la parte dal 5° al 16° bit) e da I (che non essendo presente mette a 0 il primo bit) |
0000 0001 0000 0101 0 | 0 |
101 | Si memorizza in CHK l'indirizzo di ritorno (che è l'istruzione successiva a quella attuale, puntata gia dal PC), cioè 102 e si passa all'indirizzo successivo a CHK, ovvero 107 (che verrà puntato dal PC, poiché sarà la prossima istruzione da eseguire) |
0000 0001 0000 0101 | 0 |
107 | Spostiamo verso destra i bit in E-AC | 0000 0000 1000 0010 | 1 |
108 | Controlliamo se AC è negativo. Visto che è falso, andiamo subito all'istruzione successiva, senza saltarla | 0000 0000 1000 0010 | 1 |
109 | Saltiamo all'indirizzo memorizzato in CHK (non in CHK, perché c'è I), ovvero 102 | 0000 0000 1000 0010 | 1 |
102 | Incrementiamo di 1 il contenuto di AC | 0000 0000 1000 0011 | 1 |
103 | Esecuzione completata, fermiamo la macchina | 0000 0000 1000 0011 | 1 |
ORG 100
LDA X
AND Y
BSA CHK
INC
HLT
X,AND Y
Y,HEX 200
CHK, HEX 0
CIL
SNA
BUN CHK I
AND X
BUN CHK I
END
ORG 100 | Contenuto | |
---|---|---|
100 | LDA X | |
101 | AND Y | |
102 | BSA CHK | |
103 | INC | |
104 | HLT | |
105 | X, AND Y | 0000 0001 0000 0110 |
106 | Y, HEX 200 | 0000 0010 0000 0000 |
107 | CHK, HEX 0 | |
108 | CIL | |
109 | SNA | |
10A | BUN CHK I | |
10B | ADD X | |
10C | BUN CHK I | |
END |
Soluzione esercizio 2 ❓
Indirizzo | Contenuto di AC | Contenuto E | |
---|---|---|---|
100 | Si carica in AC X, che ha il contenuto che vedete in tabella. | 0000 0001 0000 0110 | 0 |
101 | Si fa un AND tra AC ed il contenuto di Y | 0000 0000 0000 0000 | 0 |
102 | Si memorizza in CHK l'indirizzo di ritorno (che è l'istruzione successiva a quella attuale, puntata gia dal PC), cioè 103 e si passa all'indirizzo successivo a CHK, ovvero 108(che verrà puntato dal PC, poiché sarà la prossima istruzione da eseguire) |
0000 0000 0000 0000 | 0 |
108 | Spostiamo verso sinistra i bit in E-AC | 0000 0000 0000 0000 | 0 |
109 | Controlliamo se AC è negativo. Visto che è falso, andiamo subito all'istruzione successiva, senza saltarla | 0000 0000 0000 0000 | 0 |
10A | Saltiamo all'indirizzo memorizzato in CHK (non in CHK, perché c'è I), ovvero 103 | 0000 0000 0000 0000 | 0 |
103 | Incrementiamo di 1 il contenuto di AC | 0000 0000 0000 0001 | 0 |
104 | Esecuzione completata, fermiamo la macchina | 0000 0000 0000 0001 | 0 |
ORG 100
LDA 104
BUN 104
DEC 104
DEC 258
ADD 103 I
CLE
ADD 102
HLT
END
ORG 100 | Contenuto | |
---|---|---|
100 | LDA 104 | |
101 | BUN 104 | |
102 | DEC 104 | 0000 0000 0110 1000 |
103 | DEC 258 | 0000 0001 0000 0010 |
104 | ADD 103 I | 1001 0001 0000 0011 |
105 | CLE | |
106 | ADD 102 | |
107 | HLT | |
END |
Soluzione esercizio 3 ❓
Indirizzo | Contenuto di AC | Contenuto E | |
---|---|---|---|
100 | Carichiamo il contenuto della cella 104 in AC | 1001 0001 0000 0011 | 0 |
101 | Saltiamo all'indirizzo 104 | 1001 0001 0000 0011 | 0 |
104 | Sommiamo ad AC il contenuto della cella con indirizzo di memoria contenuto in 103. Quindi AC + il contenuto della cella 102, visto che DEC 258 = HEX 0102. |
1001 0001 0110 1011 | 0 |
105 | Cancelliamo il contenuto di E | 1001 0001 0110 1011 | 0 |
106 | Sommiamo ad AC il contenuto della cella 102 | 1001 0001 1101 0011 | 0 |
107 | Esecuzione completata, fermiamo la macchina | 1001 0001 1101 0011 | 0 |
ORG 100
LDA 104
BUN 104
DEC 104
DEC 258
ADD 103 I
CLE
ADD 103
HLT
END
ORG 100 | Contenuto | |
---|---|---|
100 | LDA 104 | |
101 | BUN 104 | |
102 | DEC 104 | 0000 0000 0110 1000 |
103 | DEC 258 | 0000 0001 0000 0010 |
104 | ADD 103 I | 1001 0001 0000 0011 |
105 | CLE | |
106 | ADD 103 | |
107 | HLT | |
END |
Soluzione esercizio 4 ❓
Indirizzo | Contenuto di AC | Contenuto E | |
---|---|---|---|
100 | Carichiamo il contenuto della cella 104 in AC | 1001 0001 0000 0011 | 0 |
101 | Saltiamo all'indirizzo 104 | 1001 0001 0000 0011 | 0 |
104 | Sommiamo ad AC il contenuto della cella con indirizzo di memoria contenuto in 103. Quindi AC + il contenuto della cella 102, visto che DEC 258 = HEX 0102. |
1001 0001 0110 1011 | 0 |
105 | Cancelliamo il contenuto di E | 1001 0001 0110 1011 | 0 |
106 | Sommiamo ad AC il contenuto della cella 102 | 1001 0010 0110 1101 | 0 |
107 | Esecuzione completata, fermiamo la macchina | 1001 0010 0110 1101 | 0 |
ORG 100
LDA 106
BUN 104
X, DEC 100
Y, HEX 102
ADD X
CIR
STA Y I
HLT
END
ORG 100 | Contenuto | |
---|---|---|
100 | LDA 106 | |
101 | BUN 104 | |
102 | X, DEC 100 | 0000 0000 0110 0100 |
103 | Y, HEX 102 | |
104 | ADD X | |
105 | CIR | |
106 | STA Y I | 1011 0001 0000 0011 |
107 | HLT | |
END |
Soluzione esercizio 5 ❓
Indirizzo | Contenuto AC | Contenuto E | |
---|---|---|---|
100 | Carichiamo il contenuto della cella 106 in AC | 1011 0001 0000 0011 | 0 |
101 | Saltiamo all'indirizzo 104 | 1011 0001 0000 0011 | 0 |
104 | Sommiamo il contenuto dell'indirizzo X con AC | 1011 0001 0110 0111 | 0 |
105 | Effettuiamo uno shift verso destra di E-AC | 0101 1000 1011 0011 | 1 |
106 | Salviamo il contenuto di AC nella cella il cui indirizzo è contenuto in Y, cioè la 102 (ovvero X) |
0101 1000 1011 0011 | 1 |
107 | Esecuzione completata, fermiamo la macchina | 0101 1000 1011 0011 | 1 |
ORG 100
LDA 106
BUN 104
X, DEC 400
Y, HEX 102
ADD X
CIL
STA Y I
HLT
END
ORG 100 | Contenuto | |
---|---|---|
100 | LDA 106 | |
101 | BUN 104 | |
102 | X, DEC 400 | 0000 0001 1001 0000 |
103 | Y, HEX 102 | |
104 | ADD X | |
105 | CIL | |
106 | STA Y I | 1011 0001 0000 0011 |
107 | HLT | |
END |
Soluzione esercizio 6 ❓
Indirizzo | Contenuto AC | Contenuto E | |
---|---|---|---|
100 | Carichiamo il contenuto della cella 106 in AC | 1011 0001 0000 0011 | 0 |
101 | Saltiamo all'indirizzo 104 | 1011 0001 0000 0011 | 0 |
104 | Sommiamo il contenuto dell'indirizzo X con AC | 1011 0010 1001 0011 | 0 |
105 | Effettuiamo uno shift verso sinistra di E-AC | 0110 0101 0010 0110 | 1 |
106 | Salviamo il contenuto di AC nella cella il cui indirizzo è contenuto in Y, cioè l'indirizzo 102 (ovvero X) |
0110 0101 0010 0110 | 1 |
107 | Esecuzione completata, fermiamo la macchina | 0110 0101 0010 0110 | 1 |
ORG 880
LDA X
CMA
STA X
ISZ X
Y, STA 102
LDA Y
ADD X
CIR
STA X
X, DEC 0
HLT
END
ORG 880 | Contenuto | |
---|---|---|
880 | LDA X | |
881 | CMA | 0111 0010 0000 0000 |
882 | STA X | |
883 | ISZ X | |
884 | Y, STA 102 | 0011 0001 0000 0010 |
885 | LDA Y | |
886 | ADD X | |
887 | CIR | |
888 | STA X | |
889 | X, DEC 0 | 0000 0000 0000 0000 |
88A | HLT | |
END |
Soluzione esercizio 7 ❓
Indirizzo | Contenuto AC | Contenuto X | |
---|---|---|---|
880 | Si carica X in AC | 0000 0000 0000 0000 | 0000 0000 0000 0000 |
881 | Si commuta logicamento il contenuto di AC (E non si tocca) | 1111 1111 1111 1111 | 0000 0000 0000 0000 |
882 | Si Memorizza il contenuto di AC in X | 1111 1111 1111 1111 | 1111 1111 1111 1111 |
883 | Si incrementa il contenuto di X e se uguale a 0, si salta l'istruzione successiva. | 1111 1111 1111 1111 | 0000 0000 0000 0000 |
885 | Si carica Y in AC | 0011 0001 0000 0010 | 0000 0000 0000 0000 |
886 | Si somma il contenuto di AC con X | 0011 0001 0000 0010 | 0000 0000 0000 0000 |
887 | Si shifta verso destra il contenuto di E-AC | 0001 1000 1000 0001 | 0000 0000 0000 0000 |
888 | Si memorizza il contenuto di AC in X | 0001 1000 1000 0001 | 0001 1000 1000 0001 |
889 | All'indirizzo X ora avremo il seguente comando : ADD 881 , visto che il primo bit è 0, I non è presente. Il secondo e terzo bit sono uguali a 0 ed il quarto uguale ad 1, come il codice OPR dell'istruzione ADD. La parte restante forma l'indirizzo dell'operando. |
1000 1010 1000 0001 | 0001 1000 1000 0001 |
88A | Esecuzione completata, fermiamo la macchina | 1000 1010 1000 0001 | 0001 1000 1000 0001 |
ORG 205
CLA
CLE
ADD 20A
CIR
STA 20A
AND 418 I
BUN 205
HLT
END
ORG 205 | Contenuto | |
---|---|---|
205 | CLA | |
206 | CLE | |
207 | ADD 20A | |
208 | CIR | |
209 | STA 20A | |
20A | AND 418 I | 1000 0100 0001 1000 |
20B | BUN 205 | |
20C | HLT | |
END |
Soluzione esercizio 8 ❓
Indirizzo | Contenuto AC | Contenuto dell'indirizzo 20A | |
---|---|---|---|
205 | Cancelliamo il contenuto di AC | 0000 0000 0000 0000 | 1000 0100 0001 1000 |
206 | Cancelliamo il contenuto di E | 0000 0000 0000 0000 | 1000 0100 0001 1000 |
207 | Sommiamo il contenuto di AC con quello dell'indirizzo 20A | 1000 0100 0001 1000 | 1000 0100 0001 1000 |
208 | Shiftiamo a destra il contenuto di E-AC | 0100 0010 0000 1100 | 1000 0100 0001 1000 |
209 | Memorizziamo il contenuto di AC all'indirizzo 20A | 0100 0010 0000 1100 | 0100 0010 0000 1100 |
20A | Il contenuto di questo indirizzo ora corrisponde al comando BUN 20C |
0100 0010 0000 1100 | 0100 0010 0000 1100 |
20C | Esecuzione completata, fermiamo la macchina | 0100 0010 0000 1100 | 0100 0010 0000 1100 |
ORG 100
LDA X
CMA
CME
CIR
CIR
CIL
STA X
ADD Y I
STA X
HLT
X, DEC -1
Y, -----
END
Indirizzo | Contenuto binario | ORG 100 |
---|---|---|
100 | 0010 0001 0000 1010 | LDA X |
101 | 0111 0010 0000 0000 | CMA |
102 | 0111 0001 0000 0000 | CME |
103 | 0111 0000 1000 0000 | CIR |
104 | 0111 0000 1000 0000 | CIR |
105 | 0111 0000 0100 0000 | CIL |
106 | 0011 0001 0000 1010 | STA X |
107 | 1001 0001 0000 1011 | ADD Y I |
108 | 0011 0001 0000 1010 | STA X |
109 | 0111 0000 0000 0001 | HLT |
10A | 1111 1111 1111 1111 | X |
10B | 0000 0001 0000 0101 | Y |
END |
Soluzione esercizio 9 ❓
Indirizzo | Contenuto E | Contenuto AC | Contenuto X | |
---|---|---|---|---|
100 | Carichiamo X in AC | 0 | 1111 1111 1111 1111 | 1111 1111 1111 1111 |
101 | Commutiamo logicamente il contenuto di AC | 0 | 0000 0000 0000 0000 | 1111 1111 1111 1111 |
102 | Commutiamo logicamente il contenuto di E | 1 | 0000 0000 0000 0000 | 1111 1111 1111 1111 |
103 | Shiftiamo a destra il contenuto di E-AC | 0 | 1000 0000 0000 0000 | 1111 1111 1111 1111 |
104 | Shiftiamo a destra il contenuto di E-AC | 0 | 0100 0000 0000 0000 | 1111 1111 1111 1111 |
105 | Shiftiamo a sinistra il contenuto di E-AC | 0 | 1000 0000 0000 0000 | 1111 1111 1111 1111 |
106 | Memorizziamo il contenuto di AC in X | 0 | 1000 0000 0000 0000 | 1000 0000 0000 0000 |
107 | Y deve contenere l'indirizzo dell'operando da sommare con AC (visto che è presente I). L'unico candicato possibili per avere F040 da 8000 (valore attuale di X) è l'indirizzo 105. In AC, abbiamo già il contenuto di X. |
0 | 1111 0000 0100 0000 | 1000 0000 0000 0000 |
108 | Memorizziamo il contenuto di AC in X | 0 | 1111 0000 0100 0000 | 1111 0000 0100 0000 |
109 | Esecuzione completata, fermiamo la macchina | 0 | 1111 0000 0100 0000 | 1111 0000 0100 0000 |
Contenuto dell'indirizzo 105, corrispondente all'istruzione CIL | 0111 0000 0100 0000 | + |
---|---|---|
Contenuto di X dopo l'esecuzione dell'istruzione all'indirizzo 106 | 1000 0000 0000 0000 | = |
1111 0000 0100 0000 |
ORG 100
Z,LDA X
CMA
STA X
ISZ X
Y,CLA
LDA Y
ADD X
CIR
STA X
X, DEC 0
LDA Z
HLT
END
ORG 100 | Contenuto | |
---|---|---|
100 | Z,LDA X | 0010 0001 0000 1001 |
101 | CMA | |
102 | STA X | |
103 | ISZ X | |
104 | Y,CLA | 0111 1000 0000 0000 |
105 | LDA Y | |
106 | ADD X | |
107 | CIR | |
108 | STA X | |
109 | X, DEC 0 | 0000 0000 0000 0000 |
10A | LDA Z | |
10B | HLT | |
END |
Soluzione esercizio 10 ❓
Indirizzo | Contenuto E | Contenuto AC | Contenuto X | |
---|---|---|---|---|
100 | Carichiamo il contenuto di X in AC | 0 | 0000 0000 0000 0000 | 0000 0000 0000 0000 |
101 | Complementiamo logicamente AC | 0 | 1111 1111 1111 1111 | 0000 0000 0000 0000 |
102 | Memorizziamo AC in X | 0 | 1111 1111 1111 1111 | 1111 1111 1111 1111 |
103 | Incrementiamo X e controlliamo se è uguale a 0. Il controllo è positivo, quindi saltiamo la prossima istruzione. |
0 | 1111 1111 1111 1111 | 0000 0000 0000 0000 |
105 | Carichiamo il contenuto di Y in AC, che corrisponderà al comando CLA | 0 | 0111 1000 0000 0000 | 0000 0000 0000 0000 |
106 | Sommiamo il contenuto di AC con X | 0 | 0111 1000 0000 0000 | 0000 0000 0000 0000 |
107 | Effettuiamo uno shift a destra del contenuto di AC | 0 | 0011 1100 0000 0000 | 0000 0000 0000 0000 |
108 | Memorizziamo il contenuto di AC in X | 0 | 0011 1100 0000 0000 | 0011 1100 0000 0000 |
109 | Il contenuto di X ora, equivale al seguente comando : I = 0, quindi non è presente; OPR = 011 -> STA. Quindi STA C00 . Memorizzeremo il contenuto attuale di AC nella cella indicata, anche se non sappiamo cosa contenga. |
0 | 0011 1100 0000 0000 | 0011 1100 0000 0000 |
10A | Carichiamo in AC il contenuto di Z | 0 | 0010 0001 0000 1001 | 0011 1100 0000 0000 |
10B | Esecuzione completata, fermiamo la macchina | 0 | 0010 0001 0000 1001 | 0011 1100 0000 0000 |