[Search] [Contact Us]
8052.it - Il sito web italiano dei microcontrollori 8051/52 e derivati  
 Istr. Set 
Jump

Sponsor di 8052.it
PRECMA S.r.l.

Tutorial
µC Family
FAQ
Strumenti di Sviluppo
Libri
Bookmarks
Mailing List Forum
Download Area

Prodotti


Il sito 8052.it e' in continua evoluzione: se avete suggerimenti o richieste contattateci




L'autore

 Math   Logic   Move   Flags 

Corso 8051

SET D'ISTRUZIONI: CONTROLLO DI FLUSSO

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


< SET D'ISTRUZIONI

(C)Copyright 1997, 1998 by Vault Information Services. All Rights Reserved.
Le informazioni sono fornite senza alcuna garanzia (vedi dettagli)
Contattate l'autore Craig Steiner (presso 8052.com) per l'uso e/o il permesso di divulgazione di questo corso.
Traduzione italiana di: Sergio Salvitti

8052.it
Jump
 Math   Logic   Move   Flags 


Site made with Sworg - Simple Web Organizer
 
©Copyright 2001-Today PRECMA S.r.l.
Tutti i diritti riservati