Istruzione: | ADD, ADDC |
Funzione: | Somma l'Accumulatore, Somma l'Accumulatore con riporto |
Sintassi: | ADD A,operando |
ADDC A,operando |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
ADD A,#data | 0x24 | 2 | 1 | C, AC, OV |
ADD A,iram addr | 0x25 | 2 | 1 | C, AC, OV |
ADD A,@R0 | 0x26 | 1 | 1 | C, AC, OV |
ADD A,@R1 | 0x27 | 1 | 1 | C, AC, OV |
ADD A,R0 | 0x28 | 1 | 1 | C, AC, OV |
ADD A,R1 | 0x29 | 1 | 1 | C, AC, OV |
ADD A,R2 | 0x2A | 1 | 1 | C, AC, OV |
ADD A,R3 | 0x2B | 1 | 1 | C, AC, OV |
ADD A,R4 | 0x2C | 1 | 1 | C, AC, OV |
ADD A,R5 | 0x2D | 1 | 1 | C, AC, OV |
ADD A,R6 | 0x2E | 1 | 1 | C, AC, OV |
ADD A,R7 | 0x2F | 1 | 1 | C, AC, OV |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
ADDC A,#data | 0x34 | 2 | 1 | C, AC, OV |
ADDC A,iram addr | 0x35 | 2 | 1 | C, AC, OV |
ADDC A,@R0 | 0x36 | 1 | 1 | C, AC, OV |
ADDC A,@R1 | 0x37 | 1 | 1 | C, AC, OV |
ADDC A,R0 | 0x38 | 1 | 1 | C, AC, OV |
ADDC A,R1 | 0x39 | 1 | 1 | C, AC, OV |
ADDC A,R2 | 0x3A | 1 | 1 | C, AC, OV |
ADDC A,R3 | 0x3B | 1 | 1 | C, AC, OV |
ADDC A,R4 | 0x3C | 1 | 1 | C, AC, OV |
ADDC A,R5 | 0x3D | 1 | 1 | C, AC, OV |
ADDC A,R6 | 0x3E | 1 | 1 | C, AC, OV |
ADDC A,R7 | 0x3F | 1 | 1 | C, AC, OV |
Descrizione: ADD e ADC sommano entrambi il valore operando all'Accumulatore e mettono il risultato nell'Accumulatore stesso. Il valore dell'operando non viene modificato. ADD e ADC funzionano nella stessa maniera eccetto il fatto che ADC tiene conto anche del riporto (Carry Flag).
Il bit Carry (C) e'settato se c'e' un riporto del bit 7. In altre parole, se il valore della somma senza segno tra l'Accumulatore e l'operando (e anche di C nel caso di ADC) supera il valore di 255 il bit C e' settato altrimenti resettato.
Il bit Auxillary Carry (AC) e' settato se c'e' un riporto del bit 3. In altre parole, se il valore della somma senza segno tra l'Accumulatore e l'operando (e anche di C nel caso di ADC) supera il valore di 15 il bit AC e' settato altrimenti resettato.
Il bit Overflow (OV) e' settato se il bit 6 o il bit 7 hanno il riporto, ma non entrambi. In altri termini, se se il valore della somma con segno tra l'Accumulatore e l'operando (e anche di C nel caso di ADC) va fuori del range (da -128 a +127) il bit OV e' settato altrimenti resettato.
Vedi anche: SUBB, DA, INC, DEC, Set d'istruzione
Istruzione: | DA |
Funzione: | Aggiusta il valore Decimale dell'Accumulatore |
Sintassi: | DA A |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
DA | 0xD4 | 1 | 1 | C |
Descrizione: DA aggiusta il contenuto dell'Accumulatore al corrispondente
numero BCD (Binary Coded Decimal) dopo che due numeri BCD sono stati addizionati
con ADD o ADDC. Se il bit C e' settato o se il valore del nibble meno significativo
supera il valore 9, 0x06 viene aggiunto all'Accumulatore. Se il bit C era
gia' da uno prima dell' inizio dell'istruzione oppure 0x06 era gia' stato
addizionato nella prima fase, 0x60 viene aggiunto all'Accumulatore.
Il bit Carry(C) e' settato se il risultato finale supera 0x99,
altrimenti e' resettato.
Vedi anche: ADD, ADDC, Set d'istruzioni
Istruzione: | DEC |
Funzione: | Decrementa il Registro |
Sintassi: | DEC registro |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
DEC A | 0x14 | 1 | 1 | Inv |
DEC iram addr | 0x15 | 2 | 1 | Inv |
DEC @R0 | 0x16 | 1 | 1 | Inv |
DEC @R1 | 0x17 | 1 | 1 | Inv |
DEC R0 | 0x18 | 1 | 1 | Inv |
DEC R1 | 0x19 | 1 | 1 | Inv |
DEC R2 | 0x1A | 1 | 1 | Inv |
DEC R3 | 0x1B | 1 | 1 | Inv |
DEC R4 | 0x1C | 1 | 1 | Inv |
DEC R5 | 0x1D | 1 | 1 | Inv |
DEC R6 | 0x1E | 1 | 1 | Inv |
DEC R7 | 0x1F | 1 | 1 | Inv |
Descrizione: DEC decrementa il valore del registro di 1. Se il valore iniziale del registro e' zero, esso sara' portato a 255 (0xFF esadecimale). Nota: Il bit C non viene settato nel passaggio da 0 a 255 (rolls over).
Vedi anche: INC, SUBB, Set d'istruzioni
Istruzione: | DIV |
Funzione: | Divide l'Accumulatore per B |
Sintassi: | DIV AB |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
DIV AB | 0x84 | 1 | 1 | C, OV |
Descrizione: Divide il valore senza segno dell'Accumulatore per il valore senza segno del registro "B". Il quoziente della divisione viene posto nell'Accumulatore ed il resto in "B".
Il bit Carry (C) e' sempre azzerato.
Il bit Overflow (OV) e' settato se viene tentata una divisione per zero, altrimenti e' resettato.
Vedi anche: MUL AB, Instruction Set
Istruzione: | INC |
Funzione: | Incrementa il Registro |
Sintassi: | INC registro |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
INC A | 0x04 | 1 | 1 | Inv |
INC iram addr | 0x05 | 2 | 1 | Inv |
INC @R0 | 0x06 | 1 | 1 | Inv |
INC @R1 | 0x07 | 1 | 1 | Inv |
INC R0 | 0x08 | 1 | 1 | Inv |
INC R1 | 0x09 | 1 | 1 | Inv |
INC R2 | 0x0A | 1 | 1 | Inv |
INC R3 | 0x0B | 1 | 1 | Inv |
INC R4 | 0x0C | 1 | 1 | Inv |
INC R5 | 0x0D | 1 | 1 | Inv |
INC R6 | 0x0E | 1 | 1 | Inv |
INC R7 | 0x0F | 1 | 1 | Inv |
INC DPTR | 0xA3 | 1 | 2 | Inv |
Descrizione: INC incrementa il valore del registro di 1. Se il valore inizialedel registro e' pari a 255 (0xFF esadecimale) tale incremento lo portera' a zero. Nota: il bit C non viene settato dal passaggio da 255 a 0 (rolls over).
Nel caso di "INC DPTR", viene incrementato il valore a 2 byte di DPTR come un intero senza segno. Se il valore iniziale di DPTR e' 65535 (0xFFFF esadecimale) l'incremento portera' DPTR a zero. Anche in questo caso il bit C non viene settato.
Vedi anche: ADD, ADDC, DEC, Set d'istruzioni
Istruzione: | MUL |
Funzione: | Moltiplica l'Accumulatore per B |
Sintassi: | MUL AB |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
MUL AB | 0xA4 | 1 | 4 | C, OV |
Descrizione: Moltiplica il valore senza segno dell'Accumulatore
per il valore senza segno del registro "B". Il byte piu' significativo
del risultato e' posto nell'Accumullatore e quello meno significativo in
B.
Il bit Carry (C) e sempre azzerato.
Il bit Overflow (OV) e' settato se il risultato dell'operazione e' maggiore di 255, altrimenti e' resettato.
Vedi anche: DIV, Set d'istruzioni
Istruzione: | SUBB |
Funzione: | Sottrai dall'Accumulatore con il prestito |
Sintassi: | SUBB A,operando |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
SUBB A,#data | 0x94 | 2 | 1 | C, AC, OV |
SUBB A,iram addr | 0x95 | 2 | 1 | C, AC, OV |
SUBB A,@R0 | 0x96 | 1 | 1 | C, AC, OV |
SUBB A,@R1 | 0x97 | 1 | 1 | C, AC, OV |
SUBB A,R0 | 0x98 | 1 | 1 | C, AC, OV |
SUBB A,R1 | 0x99 | 1 | 1 | C, AC, OV |
SUBB A,R2 | 0x9A | 1 | 1 | C, AC, OV |
SUBB A,R3 | 0x9B | 1 | 1 | C, AC, OV |
SUBB A,R4 | 0x9C | 1 | 1 | C, AC, OV |
SUBB A,R5 | 0x9D | 1 | 1 | C, AC, OV |
SUBB A,R6 | 0x9E | 1 | 1 | C, AC, OV |
SUBB A,R7 | 0x9F | 1 | 1 | C, AC, OV |
Descrizione: SUBB sottrae il valore dell'operando dal valore dell'Accumulatore, lasciando il risultato nell'Accumulatore stesso. Il valore dell'operando non viene modificato.
Il bit Carry (C) viene settato se e' stato richiesto il prestito per il bit 7, altrimenti e' resettato. In altre parole, se il valore da sottrarre e' maggiore dell'Accumulatore il bit C e' settato.
Il bit Auxillary Carry (AC) e' settato se il prestito e' richiesto dal bit 3. In altre parole, il bit e' settato se il nibble meno significato del valore da sottrarre e' stato piu' alto del nibble meno significativo dell'Accumulatore.
Il bit Overflow (OV) e' settato se il prestito e' stato richiesto dal bit 6 o dal bit 7, ma non da entrambi. In altri termini, il bit OV e' settato se la sottrazione di due byte con segno ha dato come risultato un valore fuori del range (da -128 a +127), altrimenti e' resettato.
Vedi anche: ADD, ADDC, DEC, Set d'istruzioni