Istruzione: | MOV |
Funzione: | Trasferisci un byte di Memoria |
Sintassi: | MOV Operando1,Operando2 |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
MOV @R0,#data | 0x76 | 2 | 1 | Inv |
MOV @R1,#data | 0x77 | 2 | 1 | Inv |
MOV @R0,A | 0xF6 | 1 | 1 | Inv |
MOV @R1,A | 0xF7 | 1 | 1 | Inv |
MOV @R0,iram addr | 0xA6 | 2 | 2 | Inv |
MOV @R1,iram addr | 0xA7 | 2 | 2 | Inv |
MOV A,#data | 0x74 | 2 | 1 | Inv |
MOV A,@R0 | 0xE6 | 1 | 1 | Inv |
MOV A,@R1 | 0xE7 | 1 | 1 | Inv |
MOV A,R0 | 0xE8 | 1 | 1 | Inv |
MOV A,R1 | 0xE9 | 1 | 1 | Inv |
MOV A,R2 | 0xEA | 1 | 1 | Inv |
MOV A,R3 | 0xEB | 1 | 1 | Inv |
MOV A,R4 | 0xEC | 1 | 1 | Inv |
MOV A,R5 | 0xED | 1 | 1 | Inv |
MOV A,R6 | 0xEE | 1 | 1 | Inv |
MOV A,R7 | 0xEF | 1 | 1 | Inv |
MOV A,iram addr | 0xE5 | 2 | 1 | Inv |
MOV DPTR,#data16 | 0x90 | 3 | 2 | Inv |
MOV R0,#data | 0x78 | 2 | 1 | Inv |
MOV R1,#data | 0x79 | 2 | 1 | Inv |
MOV R2,#data | 0x7A | 2 | 1 | Inv |
MOV R3,#data | 0x7B | 2 | 1 | Inv |
MOV R4,#data | 0x7C | 2 | 1 | Inv |
MOV R5,#data | 0x7D | 2 | 1 | Inv |
MOV R6,#data | 0x7E | 2 | 1 | Inv |
MOV R7,#data | 0x7F | 2 | 1 | Inv |
MOV R0,A | 0xF8 | 1 | 1 | Inv |
MOV R1,A | 0xF9 | 1 | 1 | Inv |
MOV R2,A | 0xFA | 1 | 1 | Inv |
MOV R3,A | 0xFB | 1 | 1 | Inv |
MOV R4,A | 0xFC | 1 | 1 | Inv |
MOV R5,A | 0xFD | 1 | 1 | Inv |
MOV R6,A | 0xFE | 1 | 1 | Inv |
MOV R7,A | 0xFF | 1 | 1 | Inv |
MOV R0,iram addr | 0xA8 | 2 | 2 | Inv |
MOV R1,iram addr | 0xA9 | 2 | 2 | Inv |
MOV R2,iram addr | 0xAA | 2 | 2 | Inv |
MOV R3,iram addr | 0xAB | 2 | 2 | Inv |
MOV R4,iram addr | 0xAC | 2 | 2 | Inv |
MOV R5,iram addr | 0xAD | 2 | 2 | Inv |
MOV R6,iram addr | 0xAE | 2 | 2 | Inv |
MOV R7,iram addr | 0xAF | 2 | 2 | Inv |
MOV bit addr,C | 0x92 | 2 | 2 | Inv |
MOV iram addr,#data | 0x75 | 3 | 2 | Inv |
MOV iram addr,@R0 | 0x86 | 2 | 2 | Inv |
MOV iram addr,@R1 | 0x87 | 2 | 2 | Inv |
MOV iram addr,R0 | 0x88 | 2 | 2 | Inv |
MOV iram addr,R1 | 0x89 | 2 | 2 | Inv |
MOV iram addr,R2 | 0x8A | 2 | 2 | Inv |
MOV iram addr,R3 | 0x8B | 2 | 2 | Inv |
MOV iram addr,R4 | 0x8C | 2 | 2 | Inv |
MOV iram addr,R5 | 0x8D | 2 | 2 | Inv |
MOV iram addr,R6 | 0x8E | 2 | 2 | Inv |
MOV iram addr,R7 | 0x8F | 2 | 2 | Inv |
MOV iram addr,A | 0xF5 | 2 | 1 | Inv |
MOV iram addr,iram addr | 0x85 | 3 | 1 | Inv |
Descrizione: MOV copia il valore dell'Operando 2 nell'Operando 1. Il valore dell'Operando 2 rimane inalterato. Ambedue gli operandi devono risiedere nella RAM interna. Nessun flag viene modificato a meno che l'istruzione non trasferisce il valore nel registro PSW (che contiene esso stesso i flag).
** Nota: Nel caso di "MOV iram addr,iram addr" il trasferimento viene
effettuato all'inverso delle altre operazioni di mov. Per esempio l'istruzione
0x85, 0x20, 0x20 va interpretata come:
"Carica il contenuto della locazione 0x20 nella locazione 0x50" e non
il viceversa come si e' portati a presumere.
Vedi anche: MOVC, MOVX, XCH, XCHD, PUSH, POP, Set d'istruzioni
Istruzione: | MOVC |
Funzione: | Trasferisci il byte di codice nell'Accumulatore |
Sintassi: | MOVC A,@A+Registro |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
MOVC A,@A+DPTR | 0x93 | 1 | 2 | Inv |
MOVC A,@A+PC | 0x83 | 1 | 1 | Inv |
Descrizione: MOVC trasferisce un byte di memoria programma nell'Accumulatore. L'indirizzo del byte da trasferire e' calcolato sommando il valore dell'Accumulatore o con DPTR o con il PC (Program Counter). Nel secondo caso il valore del Program Counter viene incrementato di uno prima di essere usato.
Vedi anche: MOV, MOVX, Set d'istruzioni
Istruzione: | MOVX |
Funzione: | Trasferisci i dati alla/dalla memoria esterna (XRAM) |
Sintassi: | MOVX Operando1,Operando2 |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
MOVX @DPTR,A | 0xF0 | 1 | 2 | Inv |
MOVX @R0,A | 0xF2 | 1 | 2 | Inv |
MOVX @R1,A | 0xF3 | 1 | 2 | Inv |
MOVX A,@DPTR | 0xE0 | 1 | 2 | Inv |
MOVX A,@R0 | 0xE2 | 1 | 2 | Inv |
MOVX A,@R1 | 0xE3 | 1 | 2 | Inv |
Descrizione: MOVX trasferisce un byte alla o dalla memoria esterna dal o all'Accumulatore.
Se l'Operando 1 e' @DPTR, l'Accumulatore e' trasferito nell'indirizzo a 16-bit della memoria esterna indicato da DPTR. Questa istruzione usa entrambe le porte P0 e P2 per trasferire l'indirizzo a 16-bit ed il dato verso l'esterno. Se l'operando 2 e' @DPTR il trasferimento viene eseguito dalla memoria esterna all'Accumulatore.
Se l'Operando 1 e' @R0 o @R1, l'Accumulatore e' trasferito nell'indirizzo a 8-bit della memoria esterna indicata dal registro corrispondente. Questa istruzione usa soltanto la porta P0 per trasferire l'indirizzo a 8-bit ed il dato verso l'esterno. La porta P2 non viene modificata. Se l'operando 2 e' @R0 o @R1 allora il byte viene trasferito dalla memoria esterna all'Accumulatore.
Vedi anche: MOV, MOVC, Set d'istruzioni
Istruzione: | POP |
Funzione: | Prendi il valore dallo Stack |
Sintassi: | POP |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
POP iram addr | 0xD0 | 2 | 2 | Inv |
Descrizione: POP effettua il "pop" dallo stack all'indirizzo iram addr specificato. L'istruzione POP prende il valore contenuto nella RAM interna puntato dallo stack pointer e lo carica nell'indirizzo iram addr. Lo stack pointer viene poi decrementato di uno.
Vedi anche: PUSH, Set d'istruzioni
Istruzione: | PUSH |
Funzione: | Metti il valore nello Stack |
Sintassi: | PUSH |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
PUSH iram addr | 0xC0 | 2 | 2 | Inv |
Descrizione: PUSH effettua l'operazione di "push" del valore specificato da iram addr nello stack. L'istruzione PUSH, prima incrementa il valore dello stack pointer di uno, poi prende il valore contenuto nell'indirizzo iram addr e lo memorizza nella RAM interna all'indirizzo puntato dallo Stack Poiter.
Vedi anche: POP, Instruction Set
Istruzione: | XCH |
Funzione: | Scambia i byte |
Sintassi: | XCH A,Registro |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
XCH A,@R0 | 0xC6 | 1 | 1 | Inv |
XCH A,@R1 | 0xC7 | 1 | 1 | Inv |
XCH A,R0 | 0xC8 | 1 | 1 | Inv |
XCH A,R1 | 0xC9 | 1 | 1 | Inv |
XCH A,R2 | 0xCA | 1 | 1 | Inv |
XCH A,R3 | 0xCB | 1 | 1 | Inv |
XCH A,R4 | 0xCC | 1 | 1 | Inv |
XCH A,R5 | 0xCD | 1 | 1 | Inv |
XCH A,R6 | 0xCE | 1 | 1 | Inv |
XCH A,R7 | 0xCF | 1 | 1 | Inv |
XCH A,iram addr | 0xC5 | 2 | 1 | Inv |
Descrizione: L'istruzione scambia il valore dell'Accumulatore con il valore del registro indicato nell'istruzione.
Vedi anche: MOV, Instruction Set
Istruzione: | XCHD |
Funzione: | Scambia i digit |
Sintassi: | XCHD A,[@R0/@R1] |
Istruzione | OpCode | N.Byte | N.Cicli | Flag |
XCHD A,@R0 | 0xD6 | 1 | 1 | Inv |
XCHD A,@R1 | 0xD7 | 1 | 1 | Inv |
Descrizione: Scambia il nibble meno significato dell'Accumulatore con il nibble meno significativo della locazione di RAM interna indirizzata da R0 o R1. Il nibble piu' significativo dei registri non viene modificato.
Vedi anche: DA, Instruction Set