Skip to content
MircoT edited this page Jan 11, 2022 · 3 revisions

Esercizio 1

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

Risultato in AC = 0083 HEX


Esercizio 2

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

Risultato in AC = 0001 HEX


Esercizio 3

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

Risultato in AC = 91D3 HEX


Esercizio 4

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

Risultato in AC = 926D HEX


Esercizio 5

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

Risultato in X = 58B3 HEX, Y = 0102 HEX


Esercizio 6

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

Risultato in X = 6526 HEX, Y = 0102 HEX


Esercizio 7

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

Risultato in X = 1881 HEX, AC = 8A81


Esercizio 8

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

Risultato in AC = 420C HEX


Esercizio 9

ORG 100
LDA X
CMA
CME
CIR
CIR
CIL
STA X
ADD Y I
STA X
HLT
X, DEC -1
Y, -----
END

Quale valore deve avere Y per avere come risultato in X : F040 HEX ?


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

Valore da inserire in Y = 0105 HEX

In bit corrisponde a 0111 0000 0100 0000, cioè l'istruzione CIL

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

Esercizio 10

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

Risultato in AC = 2109 HEX, X = 3C00 HEX -> STA C00