Nel seguito scriveremo RAM[C] intendendo "il contenuto" della cella
C della RAM, lo stesso per ACC.
Inoltre per descrivere l'effetto delle istruzioni useremo la notazione:
V'=EXPR dove V' e' il nuovo valore ad es dell'accumulatore, ecc.
ed EXPR e' un espressione con i valori correnti.
Es. ACC'=ACC+1 (incrementa ACC di 1), oppure ACC'=RAM[3]
(carica il valore RAM[3] in ACC).
Nomi delle istruzioni
Per semplicita' descriviamo le istruzioni utilizzando un nome simbolico
invece che numerico.
As esempio, supponiamo che l'istruzione che somma il valore di una
cella della RAM all'accumulatore abbia
codice 6. Se C e' il parametro, a lezione avremmo usato la notazione
6*1000+C.
Ad es. l'effetto di 6003 e' ACC'=ACC+RAM[3]
In questi esercizi useremo invece il nome mnemonico SUM al posto del
codice istruzione:
Ad es. 6003 si puo' rappresentare con SUM 3 e cosi via.
Set di istruzioni
Codice | Specifica | Effetto |
0 | READ | Muove un valore letto dall'input nel registro ACC (cancella il suo valore precedente) |
1 | MOVE C | Muove il valore contenuto nel registro ACC nella C-esima cella della RAM (cancella il valore precedente della cella) |
2 | LOAD C | Muove il valore contenuto nella cella C della RAM nel registro ACC (cancella il valore precedente di ACC) |
3 | INC | Incrementa di uno il valore contenuto nel registro ACC |
4 | DEC | Decrementa di 1 il valored del reg. ACC |
5 | TEST L | Se il valore del reg. ACC e' uguale a ZERO assegna al reg.
PC il valore
L ; altrimenti va
all'istruzione seguente
Nota: non modifica il valore del reg. ACC |
6 | SUM C | Somma al valore contenuto nel reg. ACC il valore contenuto nella C-esima cella della RAM |
7 | GOTO L | Assegna il valore L al reg. PC |
8 | END | Termina il programma |
Siamo pronti ora per qualche esercizio di programmazione a livello macchina.
RAM[0]= LOAD 0
RAM[1]= SUM 1
RAM[2]= DEC
RAM[3]= MOVE 4
RAM[4]= 0
RAM[0]= READ
RAM[1]= MOVE 11
RAM[2]= LOAD 9
RAM[3]= SUM 11
RAM[4]= MOVE 9
RAM[5]= LOAD 10
RAM[6]= SUM 11
RAM[7]= MOVE 10
RAM[8]= READ
RAM[9]= MOVE 0
RAM[10]= GOTO 00
Es 7.
Codificate i numeri decimali 13 e 8 in base 4 e in base 7.
Applicate l'algoritmo di somma alle codifiche risultanti (prima in
base 4 e poi in base 7).
Convertite infine i risultati in base decimale.