 Contenuti

Istruzioni di Assegnazione:	Istruzioni si Salto Condizionato:

LD - Load	JRC -  Salta se C = 1

JRNC -  Salta se C = 0

Istruzioni Aritmetiche e Logiche:	JRZ -  Salta se Z = 1

ADD(I)	JRNZ -  Salta se Z = 0

AND(I) - AND Logico	JRR -  Salta se bit = 0

CLR - Azzera	JRS -  Salta se bit = 1

COM - Complementa

CP(I) - Compara	Istruzioni di chiamata e Salto:

DEC - Decrementa	JP - Salta

INC - Incrementa	CALL - Chiama subroutine

RLC - Ruota a SX attraverso C	RET - Ritornafda subroutine

SLA - Shift a Sx l’accumulatore	RETI - Ritorna da interrupt

SUB(I) - Sottazione

Istruzioni di Controllo:

Istruzioni di manipolazione di Bit:	NOP - No Operazione (Ritardo 2-cicli)

SET - Setta il bit a 1	STOP - Stop Operazione

RES - Setta il bit a 0	WAIT - Attesa processore


add
 ADD(I) - Somma

Funzione:	Somma il Contenuto del Byte sorgente all’Accumulatore, lasciando il risultato nell’Accumulatore.
Esempio:	Se il registro nella locazione 22h contiene il valore 33h e l’Accumulatore il valore 20h, Add A, 22h Restituirà il risultato  53h nell’Accumulatore (33+20).
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	Add A, A	[A]+[A] [image] A	diretto	5F FF	2	4	(1)	(2)
	Add A, X	[A]+[X] [image] A	diretto	5F 80	2	4	(1)	(2)
	Add A, Y	[A]+[Y] [image] A	diretto	5F 81	2	4	(1)	(2)
	Add A, V	[A]+[V] [image] A	diretto	5F 82	2	4	(1)	(2)
	Add A, W	[A]+[W] [image] A	diretto	5F 83	2	4	(1)	(2)
	Add A, (X)	[A]+[[X]] [image] A	indiretto	A7	1	4	(1)	(2)
	Add A, (Y)	[A]+[[Y]] [image] A	indiretto	AF	1	4	(1)	(2)
	Add A, rr	[A]+[rr] [image] A	diretto	5F rr	2	4	(1)	(2)
	AddI A, #N	[A]+ #N [image] A	immediato	57 #N	2	4	(1)	(2)
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

(2) Flag Settato a 1 se il risultato produce  un resto(carry) , altrimenti è Settato a 0.

rr Indirizzo Spazio Dati (1 byte).

#N Dato Immediato (1byte).


And
 AND(I) - AND Logico

Funzione:	Esegue un AND tra il contenuto del Registro sorgente e il valore dell’Accumulatore.
Esempio:	Se il Registro nella locazione 54h contiene il valore 11110000 e l’Accumulatore contiene il valore11001100,  And A, 54h  Restituirà il risultato11000000 nell’Accumulatore.
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	AND A, A	[A]& [ A] [image] A	diretto	BF FF	2	4	(1)	N
	AND A, X	[A]&[X] [image] X	diretto	BF 80	2	4	(1)	N
	AND A, Y	[A]&[Y] [image] Y	diretto	BF 80	2	4	(1)	N
	AND A, V	[A]&[V] [image] V	diretto	BF 80	2	4	(1)	N
	AND A, W	[A]&[W] [image] W	diretto	BF 80	2	4	(1)	N
	AND A, (X)	[A]&[[X]] [image] A	indiretto	A7	1	4	(1)	N
	AND A, (Y)	[A]&[[Y]] [image] A	indiretto	AF	1	4	(1)	N
	AND A, rr	[A]&[rr] [image] A	diretto	BF rr	2	4	(1)	N
	ANDI A, #N	[A]& #N [image] A	immediato	B7 #N	2	4	(1)	N
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

N Non modificato.

rr Indirizzo Spazio Dati (1 byte).

#N Dato Immediato (1byte).


clr
 CLR - Azzera

Funzione:	Setta  il valore specificato a 00.
Esempio:	Per settare l’Accumulatore a  00: CLR A
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	CLR A	00 [image] A	diretto	DF FF	2	4	(1)	(3)
	CLR X	00 [image] X	diretto	0D 80 00	3	4	N	N
	CLR Y	00 [image] Y	diretto	0D 81 00	3	4	N	N
	CLR V	00 [image] V	diretto	0D 82 00	3	4	N	N
	CLR W	00 [image] W	diretto	0D 83 00	3	4	N	N
	CLR rr	00 [image] r	diretto	0D rr 00	3	4	N	N
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

(3) Flag Settato a 1.

N Non modificato.

rr Indirizzo Spazio Dati (1 byte).


Com
 COM - Complementa

Funzione:	Complementa ogni bit dell’Accumulatore.
Esempio:	Se l’Accumulatore contiene il valore 10111001,  COM A  Cambierà il suo valore a  01000110 e setterà il flag di carry(resto).
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	COM A	no [A] [image] [A]	inerente	2D	1	4	(1)	(4)
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

(1) 	Flag Settato a 1 Se il bit piu significativo(MSB) dell’Accumulatore conteneva 1 prima che l’istruzione COM fosse eseguita.


cpi
 CP(I) - Compara

Funzione:	Compara il byte sorgente con quello contenuto nell’Accumulatore. Il valore specificato è sottratto dal valore dell’Accumulatore, ma il risultato NON è scritto nell’Accumulatore, solo i Flags Z e C sono modificati.
Esempio:	Se l’Accumulatore contiene il valore 11110000 e il Registro 34h contiene il valore 00011100,: CP A, 34h Setterà a 0 il Flag Z e setterà a 1 il Flag di carry.
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	CP A, A	[A]-[A]	diretto	3F FF	2	4	(1)	(5)
	CP A, X	[A]-[X]	diretto	3F 80	2	4	(1)	(5)
	CP A, V	[A]-[V]	diretto	3F 81	2	4	(1)	(5)
	CP A, Y	[A]-[Y]	diretto	3F 82	2	4	(1)	(5)
	CP A, W	[A]-[W]	diretto	3F 83	2	4	(1)	(5)
	CP A, (X)	[A]-[[X]]	indiretto	27	1	4	(1)	(5)
	CP A, (Y)	[A]-[[Y]]	indiretto	2F	1	4	(1)	(5)
	CP A, rr	[A]-[rr]	diretto	3F rr	2	4	(1)	(5)
	CPI A, #N	[A]- #N	immediato	37 #N	2	4	(1)	(5)
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

(5) Flag Settato a 1 se [A]<[rr] o  [A]<[#N].  Settato a 0 se [A]>=[rr] o  [A]>=[#N].

rr Indirizzo Spazio Dati (1 byte).

#N Dato Immediato (1byte).


dec
 DEC - Decremento

Funzione:	Decrementa di 1 il valore specificato
Esempio:	Per decrementare il valore dell’Accumulatore di 1: DEC A
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	DEC X	[X]-1 [image] X	diretto corto	1D	1	4	(1)	N
	DEC Y	[Y]-1 [image] Y	diretto corto	5D	1	4	(1)	N
	DEC V	[V]-1 [image] V	diretto corto	9D	1	4	(1)	N
	DEC W	[W]-1 [image] W	diretto corto	DD	1	4	(1)	N
	DEC A	[A]-1 [image] A	diretto	FF FF	2	4	(1)	N
	DEC rr	[rr]-1 [image] rr	diretto	FF rr	2	4	(1)	N
	DEC [X]	[[X]]-1 [image] [[X]]	indiretto	E7	1	4	(1)	N
	DEC [Y]	[[Y]]-1 [image] [[Y]]	indiretto	EF	1	4	(1)	N
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

rr Indirizzo Spazio Dati (1 byte).


inc
 INC - Incremento

Funzione:	Incrementa di 1 il valore specificato.
Esempio:	Per incrementare di 1 il valore dell’Accumulatore: INC A
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	INC X	[X]-1 [image] X	diretto corto	15	1	4	(1)	N
	INC Y	[Y]-1 [image] Y	diretto corto	55	1	4	(1)	N
	INC V	[V]-1 [image] V	diretto corto	95	1	4	(1)	N
	INC W	[W]-1 [image] W	diretto corto	D5	1	4	(1)	N
	INC A	[A]-1 [image] A	diretto	7F FF	2	4	(1)	N
	INC rr	[rr]-1 [image] rr	diretto	7F rr	2	4	(1)	N
	INC [X]	[[X]]-1 [image] [[X]]	indiretto	67	1	4	(1)	N
	INC [Y]	[[Y]]-1 [image] [[Y]]	indiretto	6F	1	4	(1)	N
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

rr Indirizzo Spazio Dati (1 byte).


jrc
 JRC, JRNC, JRZ, JRNZ, JRR, JRS

Funzione:	Esegue un salto relativo del PC(Program Counter) se la condizione è soddisfatta.  JRC, JRNC, JRZ, JRNZ un salto compreso tra  PC - 15 e PC + 16.  JRR e JRS un salto compreso tra PC - 126 e PC + 129.  Altrimenti si può specificare un salto qualsiasi, è raccomandato di utilizzare un’etichetta.
Esempio:	Per saltare alla linea la cui etichetta è Prossimoc se Z = 0: JRNZ Prossimoc Se il bit 7 del dato nella locazione AFH è Settato a 1 e il PC = 123, l’istruzione: JRS 7, AFH, +25 Cambia il  PC a 148 (123+25).
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	JRC e	se C = 1, [PC]+e [image] PC	N/A	e110	1	2	N	N
	JRNC e	se C = 0, [PC]+e [image] PC	N/A	e010	1	2	N	N
	JRZ e	se Z = 1, [PC]+e [image] PC	N/A	e100	1	2	N	N
	JRNZ e	se Z = 0, [PC]+e [image] PC	N/A	e000	1	2	N	N
	JRR b, rr, ee	se bit = 0, [PC]+ee [image] PC	N/A	b00011rree	3	5	N	(7)
	JRS b, rr, ee	se bit = 1, [PC]+ee [image] PC	N/A	b10011rree	3	5	N	(7)
e = Salto da PC - 15 fino a PC + 16 (bytes).

ee = Salto da PC - 126 fino a PC + 129 (bytes).

rr = Indirizzo Spazio Dati (1 byte).

(7) = Il valore del bitm testato è scritto sul Flag C.


jp
 JP, CALL, RET, RETI

Funzione:	CALL salta alla routine specificata e scrive il prossimo indirizzo sullo stack. JP salta all’etichetta specificata. RET ritorna  alla procedura Chiamante(con CALL). RETI ritorna da un interrupt e libera la masccheratura degli interrupt(rende cioè possibile la chiamata ad un altro interrupt.
Esempio:	per saltare alla linea la cui etichetta è Prossimoc e poi ritornare alla linea successiva a CALL              CALL Prossimoc Prossimoc   NOP             RET
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	JP abc	abc [image] PC	extended	c1001ab	2	4	N	N
	CALL abc	[PC] [image] stack, abc [image] PC	extended	c0001ab	2	4	N	N
	RET	[stack] [image] PC	inerente	CD	1	2	N	N
	RETI	[stack] [image] PC	inerente	4D	1	2	(6)	(6)
(6) Disabilita i Flags di interrupt e abilita i Flags normali.

N Non modificato.


ldi
 LD(I) - Assegna

Funzione:	Carica un valore alla locazione specificata.
Esempio:	Se il Registro nella locazione 34h contiene il valore 45h, l’istruzione:: ld A, X Carica il calore 45h nell’Accumulatore.
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	LD A,X	[X] [image] A	diretto corto	35	1	4	(1)	N
	LD A, Y	[Y] [image] A	diretto corto	75	1	4	(1)	N
	LD A, V	[V] [image] A	diretto corto	B5	1	4	(1)	N
	LD A, W	[W] [image] A	diretto corto	F5	1	4	(1)	N
	LD X, A	[A] [image] X	diretto corto	3D	1	4	(1)	N
	LD Y, A	[A] [image] Y	diretto corto	7D	1	4	(1)	N
	LD V, A	[A] [image] V	diretto corto	BD	1	4	(1)	N
	LD W, A	[A] [image] W	diretto corto	FD	1	4	(1)	N
	LD A, rr	rr [image] [A]	diretto	1Frr	2	4	(1)	N
	LD rr, A	[A] [image] rr	diretto	9Frr	2	4	(1)	N
	LD A, (X)	[[X]] [image] A	indiretto	07	1	4	(1)	N
	LD A, (Y)	[[Y]] [image] A	indiretto	0F	1	4	(1)	N
	LD (X), A	[A] [image] [[X]]	indiretto	87	1	4	(1)	N
	LD (Y), A	[A] [image] [[Y]]	indiretto	8F	1	4	(1)	N
	LDI A, #N	#N [image] [A]	immediato	17 nn	2	4	(1)	N
	LDI rr, #N	#N [image] [rr]	immediato	0D rr nn	3	4	N	N
(1) = Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

N = Non modificato.

rr = Indirizzo Spazio Dati (1 byte).

#N = Dato Immediato (1byte).


nop
 NOP , SOTP , WAIT

Funzione:	NOP Nessuna  Operazione. Permette di inserire un ritardo di due cicli. STOP Ferma ogni Operazione.  Mette il Micro in Modo standby , in cui tutte le periferiche del Micre e l’oscillatore sono Stoppate.  Un interrupt esterno(NMI) o un reset riavviano il Micro. WAIT Mette il Micro in Modo standby , in cui  l’esecuzione delle istruzione è fermata ma qualche periferica continua ad essere.  Un interrupt interno proveniente da una periferica attiva (come il Timer) e un interrupt esterno o un reset riavviano il Micro.  Riferirsi al Data sheet  del Micro utilizzato per conoscere le periferiche che rimangono attive dopo l’istruzione WAIT. STOP e WAIT sono utilizzati per risparmiare energia in caso di alimentazione tramite batterie.
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	NOP	Nessuna	inerente	04	1	2	N	N
	STOP	Stop processore	inerente	6D	1	2	N	N
	WAIT	Attesar	inerente	ED	1	2	N	N


set
 SET, RES

Funzione:	SET setta il bit specificato a 1.  RES setta il bit specificato a 0.
Esempio:	Se il registro 23h contiene 11111111, l’Istruzione: RES 4,23h Lo lascierà 11101111.
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	SET b,rr	set bit b,rr to 1	bit diretto	b110011rr	2	4	N	N
	RES b,rr	set bit b,rr to 0	bit diretto	b010011rr	2	4	N	N
b = indirizzo a 3-bit.

rr = Indirizzo Spazio Dati (1 byte).


rlc
 RLC - Shift a Sinistra attraverso il flag C(carry)

Funzione:	Sposta ogni bit dell’Accumulatore di un posto a Sinistra.  Il contenuto del bit 7 (MSB) è posto nel flag C e il contenuto del flag Cè posto nel bit 0.
Esempio:	Se l’Accumulatore contiene 10001001 e il flag C contiene 0 l’Istruzione: RLC A lascia l’accumulatore con il valore 00010010 e il flag C Settato a 1.
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	RLC A	C [image] A [image] C	inerente	AD	1	4	(1)	(4)
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

(4) Flag Settato a 1 Se il bit t dell’Accumulatore conteneva 1 prima di eseguire l’istruzione RLC.


sla
 SLA - Shift a Sinistra dell’Accumulatore

Funzione:	Somma il contenuto dell’Accumulatore a se stesso ruotando di un posto a a sinistra tutti i bit.
Esempio:	Se l’Accumulatore contiene il valore 11001101, l’Istruzione: SLA A lascia nell’Accumulatore il valore 10011010 e il flag C Settato a 1.
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	SLA A	C [image] A [image] 0	inerente	5F FF	2	4	(1)	(4)
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

(4) Flag Settato a 1 se il bit 7 dell’Accumulatore (MSB) conteneva 1 prima di eseguire listruzione SLA.


subi
 SUB(I) - Sottrazione

Funzione:	Sottrae il valore specificato del Accumulatore.
Esempio:	Per sotrtarre il valore puntato da X: SUB A, (X)
Sintassi:

	Istruzione	Operazione	Modo di Indirizzam.	Codice	Bytes	Cicli	Flag Z	Flag C
	SUB A, A	[A]-[A] [image] A	diretto	DF FF	2	4	(1)	(5)
	SUB A, X	[A]-[X] [image] A	diretto	DF 80	2	4	(1)	(5)
	SUB A, Y	[A]-[Y] [image] A	diretto	DF 81	2	4	(1)	(5)
	SUB A, V	[A]-[V] [image] A	diretto	DF 82	2	4	(1)	(5)
	SUB A, W	[A]-[W] [image] A	diretto	DF 83	2	4	(1)	(5)
	SUB A, (X)	[A]-[[X]] [image] A	indiretto	C7	1	4	(1)	(5)
	SUB A, (Y)	[A]-[[Y]] [image] A	indiretto	CF	1	4	(1)	(5)
	SUB A, rr	[A]-[rr] [image] A	diretto	DF rr	2	4	(1)	(5)
	SUBI A, #N	[A]- #N [image] A	immediato	D7 #N	2	4	(1)	(5)
(1) Flag Settato a 1 se il risultato è zero, altrimenti è Settato a 0.

(5) Flag Settato a 1 se [A]<[rr] o  [A]<[#N].  Settato a 1 se [A]>=[rr] o  [A]>=[#N].

rr Indirizzo Spazio Dati (1 byte).

#N Dato Immediato (1byte).