Corso 8051 - SET D'ISTRUZIONI

ISTRUZIONI DI SALTO


ACALL

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



AJMP

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



CJNE

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



DJNZ

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



JMP

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



JNZ

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



JZ

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



LCALL

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



LJMP

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



NOP

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



RET

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



RETI

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



SJMP

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



^ INDICE
< SET D'ISTRUZIONI

(C) Copyright 1997, 1998 by Vault Information Services. All Rights Reserved.
Le informazioni sono fornite senza alcuna garanzia. Per favore vedi dettagli.
Contattaci per l'uso e/o il permesso di divulgazione di questo corso.
Traduzione italiana di: Sergio Salvitti
1