Istruzione: | ACALL |
Funzione: | Chiama una subroutine con salto assoluto in un blocco di 2K |
Sintassi: | ACALL code address |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
ACALL page0 | 0x11 | 2 | 2 | Inv |
ACALL page1 | 0x31 | 2 | 2 | Inv |
ACALL page2 | 0x51 | 2 | 2 | Inv |
ACALL page3 | 0x71 | 2 | 2 | Inv |
ACALL page4 | 0x91 | 2 | 2 | Inv |
ACALL page5 | 0xB1 | 2 | 2 | Inv |
ACALL page6 | 0xD1 | 2 | 2 | Inv |
ACALL page7 | 0xF1 | 2 | 2 | Inv |
Descrizione: ACALL chiama una subroutine senza condizioni all'indirizzo di codice indicato da code address. A questo punto viene salvato nello stack l'indirizzo dell'istruzione che segue ACALL, prima il byte meno significativo e poi quello piu' significativo. Il Program Counter viene caricato con il valore dove risiede la subroutine chiamata.
Il nuovo valore del Program Counter e' calcolato sostituendo il suo byte meno significativo con il secondo byte dell'istruzione ACALL e sostituendo i bit da 0 a 2 del byte piu' significativo del Program Counter con i 3 bit che indicano la pagina ove saltare. I bit da 3 a 7 del byte piu' signficativo del Program Counter restano inalterati.
Poiche' ACALL modifica solo 11 bit del Program Counter, le chiamate possono dirette a routine locate all'interno dello stesso blocco di 2k come il primo byte che segue l'istruzione ACALL.
Vedi anche: LCALL, RET, Set d'istruzioni
Istruzione: | AJMP |
Funzione: | Salto assoluto in un blocco di 2k |
Sintassi: | AJMP code address |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
AJMP page0 | 0x01 | 2 | 2 | Inv |
AJMP page1 | 0x21 | 2 | 2 | Inv |
AJMP page2 | 0x41 | 2 | 2 | Inv |
AJMP page3 | 0x61 | 2 | 2 | Inv |
AJMP page4 | 0x81 | 2 | 2 | Inv |
AJMP page5 | 0xA1 | 2 | 2 | Inv |
AJMP page6 | 0xC1 | 2 | 2 | Inv |
AJMP page7 | 0xE1 | 2 | 2 | Inv |
Descrizione: AJMP salta senza condizioni all'indirizzo di codice indicato da code address.
Il nuovo valore del Program Counter e' calcolato sostituendo il suo byte meno significativo con il secondo byte dell'istruzione AJMP e sostituendo i bit da 0 a 2 del byte piu' significativo del Program Counter con i 3 bit che indicano la pagina ove saltare. I bit da 3 a 7 del byte piu' signficativo del Program Counter restano inalterati.
Poiche' AJMP modifica solo 11 bit del Program Counter, le chiamate possono dirette a routine locate all'interno dello stesso blocco di 2k come il primo byte che segue l'istruzione AJMP.
Vedi anche: LJMP, SJMP, Set d'istruzioni
Istruzione: | CJNE |
Funzione: | Compara e salta se non uguale |
Sintassi: | CJNE Operando1,Operando2,reladdr |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
CJNE A,#data,reladdr | 0xB4 | 3 | 2 | C |
CJNE A,iram addr,reladdr | 0xB5 | 3 | 2 | C |
CJNE @R0,#data,reladdr | 0xB6 | 3 | 2 | C |
CJNE @R1,#data,reladdr | 0xB7 | 3 | 2 | C |
CJNE R0,#data,reladdr | 0xB8 | 3 | 2 | C |
CJNE R1,#data,reladdr | 0xB9 | 3 | 2 | C |
CJNE R2,#data,reladdr | 0xBA | 3 | 2 | C |
CJNE R3,#data,reladdr | 0xBB | 3 | 2 | C |
CJNE R4,#data,reladdr | 0xBC | 3 | 2 | C |
CJNE R5,#data,reladdr | 0xBD | 3 | 2 | C |
CJNE R6,#data,reladdr | 0xBE | 3 | 2 | C |
CJNE R7,#data,reladdr | 0xBF | 3 | 2 | C |
Descrizione: CJNE compara il valore dell'operando 1 con quello dell'operando 2 e salta all'indirizzo relativo indicato se essi non sono uguali. In caso contrario, il programma prosegue la sua esecuzione dell'istruzione successiva a quella dell'istruzione CJNE.
Il bit Carry (C) e' settato se l'operando 1 e' inferiore all'operando 2, altrimenti e' resettato.
Vedi anche: DJNZ. Set d'istruzioni
Istruzione: | DJNZ |
Funzione: | Decrementa e salta se il risultato non e' zero |
Sintassi: | DJNZ Registro,reladdr |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
DJNZ iram addr,reladdr | 0xD5 | 3 | 2 | Inv |
DJNZ R0,reladdr | 0xD8 | 2 | 2 | Inv |
DJNZ R1,reladdr | 0xD9 | 2 | 2 | Inv |
DJNZ R2,reladdr | 0xDA | 2 | 2 | Inv |
DJNZ R3,reladdr | 0xDB | 2 | 2 | Inv |
DJNZ R4,reladdr | 0xDC | 2 | 2 | Inv |
DJNZ R5,reladdr | 0xDD | 2 | 2 | Inv |
DJNZ R6,reladdr | 0xDE | 2 | 2 | Inv |
DJNZ R7,reladdr | 0xDF | 2 | 2 | Inv |
Descrizione: DJNZ decementa il valore del registro di 1. Se il valore iniziale del registro e' 0, l'operazione fara' in modo che esso contenga 255 (0xFF Esadecimale). Se il nuovo valore del Registro non e' zero, il programma saltera' all'indirizzo indicato da relative addr. Se invece il nuovo valore del Registro e' zero, il programma continuera' dall'istruzione che segue l'istruzione di DJNZ.
Vedi anche: DEC, JZ, JNZ, Set d'istruzioni
Istruzione: | JMP |
Funzione: | Salra al Data Pointer piu' l'Accumulatore |
Sintassi: | JMP @A+DPTR |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
JMP @A+DPTRE | 0x73 | 1 | 2 | Inv |
Descrizione: JMP salta senza condizioni all'indirizzo rappresentato dalla somma del valore di DPTR e il valore dell'Accumulatore.
Vedi anche: Set d'istruzioni
Istruzione: | JNZ |
Funzione: | Salta se l'Accumulatore non e' nullo |
Sintassi: | JNZ reladdr |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
JNZ reladdr | 0x70 | 2 | 2 | Inv |
Descrizione: JNZ salta all'indirizzo indicato da reladdr se l'Accumulatore un qualsiasi valore tranne lo zero. Nell'altro caso, il programma continua con l'istruzione che segue l'istruzione JNZ.
Vedi anche: JZ, Instruction Set
Istruzione: | JZ |
Funzione: | Salta se l'Accumulatore e' nullo |
Sintassi: | JNZ reladdr |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
JZ reladdr | 0x60 | 2 | 2 | Inv |
Descrizione: JZ salta all'indirizzo indicato da reladdr se l'Accumulatore contiene il valore zero. Nell'altro caso, il programma continua con l'istruzione che segue l'istruzione JZ.
Vedi anche: JNZ, Instruction Set
Istruzione: | LCALL |
Funzione: | Chiamata lunga |
Sintassi: | LCALL code addr |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
LCALL code addr | 0x12 | 3 | 2 | Inv |
Descrizione: LCALL chiama una subroutine. Essa incrementa il Program Counter (per puntare all'istruzione seguente) ed effettua il push del PC nello stack (il byte meno significativo prima e poi quello piu' significativo). Il Program Counter viene caricato con il valore a 16-bit corrispondente ai due byte successivi al codice operativo dell'istruzione LCALL.
Vedi anche: ACALL, RET, Set d'istruzioni
Istruzione: | LJMP |
Funzione: | Salto lungo |
Sintassi: | LJMP code addr |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
LJMP code addr | 0x02 | 3 | 2 | Inv |
Descrizione: LJMP salta senza condizioni all'indirizzo specificato da code addr.
Vedi anche: AJMP, SJMP, JMP, Set d'istruzioni
Istruzione: | NOP |
Funzione: | Nessuna operazione, attendi |
Sintassi: | NOP |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
NOP | 0x00 | 1 | 1 | Inv |
Descrizione: NOP, come suggerisce anche il nome nonfanulla per la durata di un ciclo macchina. Essa e' generalmente usata per scopi di temporizzazione. Assolutamente, nessun Flag o registro viene alterato.
Vedi anche: Set d'istruzioni
Istruzione: | RET |
Funzione: | Ritorna da Subroutine |
Sintassi: | RET |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
RET | 0x22 | 1 | 2 | Inv |
Descrizione: RET e' usato per tornare da una subroutine percedentemente chiamata da LCALL o da ACALL. l'esecuzione del programma continua dall'indirizzo calcolato prendendo due byte dalla cima dello stack. Prima viene preso il byte piu' significativo e poi quello meno significativo.
Vedi anche: LCALL, ACALL, RETI, Set d'istruzioni
Istruzione: | RETI |
Funzione: | Ritorna da Interrupt |
Sintassi: | RETI |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
RETI | 0x32 | 1 | 2 | Inv |
Descrizione: RETI e' usato per ritonare da un routine di servizio di un interrupt. RETI prima abilita tutti gli interrupt di priorita' uguale o inferiore a quella dell'interrupr che si sta terminando. Poi l'esecuzione del programma prosegue all'indirizzo calcolato prendendo due byte dalla cima dello stack. Prima viene preso il byte piu' significativo e poi quello meno significativo.
RETI funziona come RET che viene pero' utilizzato al di fuori delle routine di interrupt.
Vedi anche: RET, Instruction Set
Istruzione: | SJMP |
Funzione: | Salto corto |
Sintassi: | SJMP reladdr |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
SJMP reladdr | 0x80 | 2 | 2 | Inv |
Descrizione: SJMP salta senza condizioni all'indirizzo specificato da reladdr. Reladdr deve essere contenuto nel range da -128 a +127 byte dall'istruzione che segue SJMP stesso.
Vedi anche: LJMP, AJMP, Set d'istruzioni