IL SET DI ISTRUZIONI
TIPI DI ISTRUZIONE
- TRASFERIMENTO DATI (LD, LDI)
- OPERAZIONI ARITMETICHE-LOGICHE (ADD, ADDI, AND, ANDI, COM, CP, CPI, DEC, INC, SUB, SUBI, SLA, RLC)
- SALTO, CHIAMATA, RITORNO (CALL, JP, JRC, JRNC, JRNZ, JRR, JRS, JRZ, RET, RETI)
- CONTROLLO DI BIT (RES, SET)
- CONTROLLO DI CPU (NOP, STOP, WAIT)
ADD ADDI AND ANDI CALL CLR COM CP CPI DEC INC JP JRC JRNR JRNZ JRR JRS JRZ LD LDI NOP RES RET RETI RLC SET SLA STOP SUB SUBI WAIT
____________________________________________________________________________________
ADD --- somma
Il contenuto di una variabile viene sommato al contenuto dell'accumulatore ed il risultato è memorizzato nell'accumulatore. Formati possibili:
ADD A,A
ADD A,X
ADD A,Y
ADD A,V
ADD A,W
ADD A,(X)
ADD A,(Y)
ADD A,rr
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C è settato se l'operazione da un riporto, cioè se è maggiore di 255 (FFh)
____________________________________________________________________________________ ADDI --- somma immediata Un numero viene sommato al contenuto dell'accumulatore ed il risultato è memorizzato nell'accumulatore. Formati possibili:
ADDI A, nn
A = registro accumulatore
nn = numero da 0 a 255 (FFh)
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C è settato se l'operazione da un riporto, cioè se è maggiore di 255(FFh)
____________________________________________________________________________________
AND --- funzione logica AND
Funzione logica AND tra l'accumulatore ed una variabile. Il risultato è memorizzato nell'accumulatore. Formati possibili:
ADD A,A
ADD A,X
ADD A,Y
ADD A,V
ADD A,W
ADD A,(X)
ADD A,(Y)
ADD A,rr
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C non è influenzato
____________________________________________________________________________________
ANDI --- funzione logica AND immediata
Funzione logica AND tra l'accumulatore ed un numero. Il risultato è memorizzato nell'accumulatore. Formati possibili:
ANDI A, nn
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C non è influenzato
____________________________________________________________________________________
CALL --- chiama subroutine
Richiama una subroutine. Formati disponibili:
CALL nomesub
nomesub = etichetta della subroutine da eseguire
Cicli macchina = 4
I flag Z e C non sono influenzati
____________________________________________________________________________________
CLR --- azzera byte
Resetta l'accumulatore, un registro o una variabile. Formati disponibili:
CLR A
CLR X
CLR Y
CLR V
CLRW
CLRrr
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
Cicli macchina = 4
Il flag Z è settato
Il flag C non è resettato
____________________________________________________________________________________
COM --- complemento byte
Calcola il complemento del contenuto dell'accumulatore e memorizza il risultato nell'accumulatore. Formati disponibili:
COM A
A = registro accumulatore
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C non è settato se prima della funzione COM il bit 7 di A è 1
____________________________________________________________________________________
CP --- compara
Compara il contenuto di un registro o di una variabile con l'accumulatore. Formati disponibili:
CP A, A
CP A, X
CP A, Y
CP A, (X)
CP A, (Y)
CP A, rr
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
Cicli macchina = 4
Il flag Z è settato se i numeri sono uguali, resettato se diversi
Il flag C non è settato se l'accumulatore è minore del registro o della variabile, resettato se maggiore o uguale
_____________________________________________________________________________________
CPI --- compara immediato
Compara il contenuto dell'accumulatore con un numero. Formati disponibili:
CPI A, nn
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
Cicli macchina = 4
Il flag Z è settato se i numeri sono uguali, resettato se diversi
Il flag C non è settato se l'accumulatore è minore del numero, resettato se maggiore o uguale
_____________________________________________________________________________________
DEC --- decremente
Decrementa di 1 il contenuto dell'accumulatore, di un registro o di una variabile. Formati disponibili:
DEC A
DEC X
DEC Y
DEC V
DEC W
DEC (X)
DEC (Y)
DEC rr
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C non è influenzato
_____________________________________________________________________________________
INC --- incrementa
Incrementa di 1 il contenuto dell'accumulatore, di un registro o di una variabile. Formati disponibili:
INC A
INC X
INC Y
INC V
INC W
INC (X)
INC (Y)
INC rr
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C non è influenzato
_____________________________________________________________________________________
JP --- salta
Effettua un salto incondizionato ad una etichetta. Formati disponibili:
JP abc
abc = etichetta
Cicli macchina = 4
I flag Z e C non sono influenzati
_____________________________________________________________________________________
JRC --- salta se c'è riporto
Salta ad una etichetta se il flag Carry è settato. Formati disponibili:
JRC e
e = numero che rappresenta la distanza in byte dell'etichetta di salto rispetto all'istruzione JRC
Cicli macchina = 2
I flag Z e C non sono influenzati
_____________________________________________________________________________________
JRNR --- salta se non c'è riporto
Salta ad una etichetta se il flag Carry è resettato. Formati disponibili:
JRNC e
e = numero che rappresenta la distanza in byte dell'etichetta di salto rispetto all'istruzione JRNC
Cicli macchina = 2
I flag Z e C non sono influenzati
_____________________________________________________________________________________
JRNZ --- salta se l'operazione non da 0
Salta ad una etichetta se il flag Zero è resettato. Formati disponibili:
JRNZ e
e = numero che rappresenta la distanza in byte dell'etichetta di salto rispetto all'istruzione JRNZ
Cicli macchina = 2
I flag Z e C non sono influenzati
_____________________________________________________________________________________
JRR --- salta se bit è 0
Salta ad una etichetta se un determinato bit di una variabile è resettato. Formati disponibili:
JRR b, rr, ee
b = numero del bit da testare (da 0 a 7)
rr = byte di indirizzamento della variabile
ee = numero che rappresenta la distanza in byte dell'etichetta di salto rispetto all'istruzione JRR
Cicli macchina = 5
Il flag Z non è influenzato
Il flag C contiene il valore del bit testato
_____________________________________________________________________________________
JRS --- salta se il bit è 1
Salta ad una etichetta se un determinato bit di una variabile è settato. Formati disponibili:
JRS b, rr, ee
b = numero del bit da testare (da 0 a 7)
rr = byte di indirizzamento della variabile
ee = numero che rappresenta la distanza in byte dell'etichetta di salto rispetto all'istruzione JRS
Cicli macchina = 5
Il flag Z non è influenzato
Il flag C contiene il valore del bit testato
_____________________________________________________________________________________
JRZ --- salta se l'operazione da 0
Salta ad una etichetta se il flag Zero è settato. Formati disponibili:
JRZ e
e = numero che rappresenta la distanza in byte dell'etichetta di salto rispetto all'istruzione JRNZ
Cicli macchina = 2
I flag Z e C non sono influenzati
_____________________________________________________________________________________
LD --- carica registro
Serve per caricare il valore contenuto in una variabile, in un registro o nell'accumulatore. Per questa istruzione va sempre usato l'accumulatore. Formati disponibili:
LD A, X
LD A, Y
LD A, V
LD A, W
LD X, A
LD Y, A
LD V, A
LD W, A
LD A, (X)
LD A, (Y)
LD (X), A
LD (Y), A
LD A, rr
LD rr, A
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C non è influenzato
_____________________________________________________________________________________
LDI --- carica registro immediato
Serve per caricare un numero in una variabile, in un registro o nell'accumulatore. Formati disponibili:
LDI A, nn
LDI X, nn
LDI Y, nn
LDI V, nn
LDI W, nn
LDI rr, nn
A = registro accumulatore
X, Y, V, W = registri del micro
rr = indirizzo della variabile (1 byte)
nn = numero di 1 byte
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C non è influenzato
_____________________________________________________________________________________
NOP --- nessuna operazione
Esegue 2 cicli macchina a vuoto. Viene usata per creare dei piccoli ritardi. Formati disponibili:
NOP
Cicli macchina = 2
I flag Z e C non sono influenzati
_____________________________________________________________________________________
RES --- resetta bit
Resetta uno degli 8 bit di una variabile o dell'accumulatore. Formati disponibili:
RES b, A
RES b, rr
A = registro accumulatore
rr = indirizzo della variabile (1 byte)
b = numero del bit da resettare (da 0 a 7)
Cicli macchina = 4
I flag Z e C non sono influenzati
_____________________________________________________________________________________
RET --- ritorna da una subroutine
Esce dalla subroutine e ritorna al punto della chiamata CALL. Formati disponibili:
RET
I flag Z e C non sono influenzati
_____________________________________________________________________________________
RETI --- ritorna da un interrupt
Esce dalla subroutine di interrupt e ritorna al punto precedente all'evento di interrupt. Formati disponibili:
RETI
I flag Z e C vengono riportati alla condizione in cui si trovavano prima dell'interrupt
_____________________________________________________________________________________
RLC --- ruota a sinistra con riporto
Ruota a sinistra i bit dell'accumulatore. Trasferisce il bit 7 nel Carry, mentre il contenuto precedente del carry passa nel bit 0 dell'accumulatore. Formati disponibili:
RLC A
A = registro accumulatore
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C riporta il valore del bit 7
_____________________________________________________________________________________
SET --- setta bit
Setta uno degli 8 bit di una variabile o dell'accumulatore. Formati disponibili:
SET b, A
SET b, rr
A = registro accumulatore
rr = indirizzo della variabile (1 byte)
b = numero del bit da settare (1 byte)
Cicli macchina = 4
I flag Z e C non sono influenzati
_____________________________________________________________________________________
SLA --- ruota a sinistra senza riporto
Ruota a sinistra i bit dell'accumulatore. Trasferisce il bit 7 nel carry cancellando il valore precedente. Equivale a una moltiplicazione per 2. Formati disponibili:
SLA A
A = registro accumulatore
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C riporta il valore del bit 7
_____________________________________________________________________________________
STOP --- blocca il funzionamento del micro
Blocca l'oscillatore di clock mettendo in standby tutto il microprocessore. Formati disponibili:
STOP
Cicli macchina = 2
I flag Z e C non sono influenzati
_____________________________________________________________________________________
SUB --- sottrazione
Il contenuto di una variabile viene sottratto al contenuto dell'accumulatore ed il risultato è memorizzato nell'accumulatore. Formati disponibili:
SUB A, A
SUB A, X
SUB A, Y
SUB A, V
SUB A, W
SUB A, (X)
SUB A, (Y)
SUB A, rr
A = registro accumulatore
nn = numero di 1 byte
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C non è settato se il contenuto dell'accumulatore è minore del numero, resettato se maggiore o uguale.
_____________________________________________________________________________________
SUBI --- sottrazione immediata
Un numero viene sotratto al contenuto dell'accumulatore ed il risultato è memorizzato nell'accumulatore. Formati disponibili:
SUBI A, nn
A = registro accumulatore
nn = numero di 1 byte
Cicli macchina = 4
Il flag Z è settato se il risultato è 0, resettato se diverso da 0
Il flag C non è settato se il contenuto dell'accumulatore è minore del numero, resettato se maggiore o uguale.
_____________________________________________________________________________________
WAIT --- stato di attesa
Mette in standby il microprocessore, ma l'oscillatore do clock rimane attivo. Formati disponibili:
WAIT
Cicli macchina = 2
I flag Z e C non sono influenzati