Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SET DE INSTRUCCIONES
1.1 DESCRIPCION
Rn
- Registros R7 a R0 del banco de registros actualmente seleccionado.
Directo
- Dirección de 8 bits de un dato en la Ram interna. Este puede ser un lugar de
memoria
(00h-7Fh) o un SFR, es decir puertas de entrada salida, registros de control, registros de
estados, etc. (80h-FFh).
@Ri
- Lugar de Ram interna de 8 bit (00h-FFh) direccionado indirectamente a través de
los registros R1 o R0
#Dato
- Constante de 8 bits incluida en la instrucción
#Dato 16
- Constante de 16 bits incluida en la instrucción.
Direc 16
- Dirección destino de 16 bits. Utilizada por LCALL y LJMP. Un salto puede ser a
cualquier lugar dentro de los 64K bytes del espacio de direccionamiento de
memoria de programa.
Direc 11
- Dirección destino de 11 bits. Utilizada por ACALL y AJMP. El salto estará dentro
de la misma pagina de 2 kbytes de la memoria de programa junto con el primer byte de
la siguiente instrucción.
Desp
- Byte de desplazamiento de 8 bits en complemento a 2. Utilizada por SJMP y todos
los saltos condicionales. El rango es de -128 a +127 bytes relativo al primer byte de la
siguiente instrucción.
Bit
- Bit direccionado en forma directa de la RAM interna de datos o SFR.
INSTRUCCION Cy OV AC INSTRUCCION Cy OV AC
ADD X X X CLR C 0
ADDC X X X CPL C X
SUBB X X X ANL C,bit X
MUL 0 X ANL C,/bit X
DIV 0 X ORL C,bit X
DA X ORL C,/bit X
RRC X MOV C,bit X
RLC X CJNE X
SETBC 1
Todas las operaciones que utilizan el PSW como registro destino afectan los flags.
* ACALL Direc 11
Numero de Bytes: 2
Ciclos de Maquina: 2
Codificación:
a10 a9 a8 1 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0
Los tres BMS del primer byte del código de la instrucción, conjuntamente con el segundo
byte , conforman los 11 bits de dirección que se debe especificar en la instrucción.
Operación: ACALL
(PC) <- (PC) + 2
(SP) <- (SP) + 1
((SP)) <- (PCL)
(SP) <- (SP) + 1
Función: Suma
Descripción: Suma el dato indicado en el byte fuente, con el contenido del Acumulador,
dejando el resultado en este.
a) REGISTRO b) DIRECTO
ADD A,Rn ADD A, dirección
Número de Bytes: 1 Número de Bytes: 2
Ciclos de Máquina: 1 Ciclos de Máquina: 1
Codificación: Codificación:
00101rrr 0 0 1 0 0 1 1 1 dirección
Operación: ADD peración: ADD
(A) <- (A) + (Rn) (A) <- (A) + (dir.)
Descripción: Suma el dato indicado en el byte fuente, con el contenido del Acumulador mas
el transporte, dejando el resultado en el Acumulador.
a) REGISTRO b) DIRECTO
ADDC A,Rn ADDC A, dirección
Número de Bytes: 1 Número de Bytes: 2
* AJMP Direc 11
a10 a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0
Los tres BMS del primer byte del c¢digo de la instrucción, conjuntamente con el
segundo byte, conforman los 11 bits de direcciones que se deben especificar en la instrucción.
Operacin: AJMP
(PC) <- (PC) + 2
(PC 10-0) <- direc. especificada
* ANL <destino>,<fuente>
Descripción: Ejecuta la operación AND bit a bit entre las variables indicadas,
almacenando el resultado en el byte destino.
Cuando el destino es el Ac, el operando fuente puede direccionarse mediante los modos
registro, directo, indirecto por registro o inmediato. Cuando el destino es una dirección de
memoria el operando fuente puede ser un dato inmediato o el contenido del Acumulador.
Direccionamiento: Permite la utilización de cuatro modos segó sea el registro destino, a saber:
a) REGISTRO b) DIRECTO
ANL A,Rn ANL A, direccin
Número de Bytes: 1 Número de Bytes: 2
Ciclos de Máquina: 1 Ciclos de Máquina: 1
Codificación: Codificación:
01011rrr 0 1 0 1 0 1 0 1 dirección
Operación: ANL Operación: ANL
(A) <- (A) ^ (Rn) (A) <- (A) ^ (dir.)
Función: Realiza la operación lógica AND (Y) entre el flag de transporte y el fuente.
Nota:
El operando fuente puede ser cualquier bit direccionable de la zona de RAM interna o de
alguno de los registros de funciones especiales.
Número de Bytes: 2
Ciclos de Máquina: 2
Descripción: CJNE compara las magnitudes de los operandos fuente y destino, saltando si sus
valores no son iguales. La dirección destino se obtiene sumando el desplazamiento indicado
en la instrucción, al (PC), luego de que éste quedó apuntando al primer byte de la instrucción
siguiente. En caso de que la condición no se cumpla, no se produce el salto. El desplazamiento
es de ocho bits y se considera en sistema de representación de complemento a dos, por lo tanto
su rango es de -128 a 127.
El flag de transporte se pone en uno cuando el valor sin signo del operando fuente es mayor
que el del operando destino, y en cero en el caso inverso.
Ninguno de los operandos es afectado por esta instrucción.
Flags Afectados: C
Número de Bytes: 3
Ciclos de Máquina: 2
Direccionamiento: Para ubicar los operandos a comparar, hay cuatro combinaciones
posibles, a saber:
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
11100100
Operación: CLR
(A) <- 0
* CLR bit
Descripción: El bit indicado es colocado en cero. Opera sobre cualquier bit direccionable en
forma directa.
Número de Bytes: 2
Ciclos de Máquina: 1
Codificación:
1 1 0 0 0 0 1 0 dir. bit
Operación: CLR
(bit) <- 0
* CLR C
Flags Afectados: C
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
11000011
Operación: CLR
(C) <- 0
Número de Bytes: 1
Ciclos de Maquina: 1
Codificación:
11110100
Operación: CPL
(A) <- Comp.(A)
* CPL bit
Número de Bytes: 2
Ciclos de Máquina: 1
Codificación:
1 0 1 1 0 0 1 0 bit
Operación: CPL
(bit) <- Comp.(bit)
* CPL C
Flags Afectados: C
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
* DA A
Flags Afectados: C
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
11010100
Operación: DA A
si {[(A3-0) > 9 ] ¢ [(AC) = 1 ]} -->> (A3-0) <- (A3-0) + 6
y/o si {[(A7-4) > 9 ] ¢ [(C) = 1 ]} -->> (A7-4) <- (A7-4) + 6
* DEC A
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
00010100
Operación: DEC
(A) <- (A) - 1
a) REGISTRO b) DIRECTO
DEC Rn DEC (dir.)
Número de Bytes: 1 Número de Bytes: 2
Ciclos de Máquina: 1 Ciclos de Máquina: 1
Codificación: Codificación:
00011rrr 0 0 0 1 0 1 0 1 dirección
Operación: DEC Operación: DEC
(Rn) <- (Rn) - 1 (dir.) <- (dir.) - 1
* DIV AB
Función: Dividir.
Número de Bytes: 1
Ciclos de Máquina: 4
Codificación:
* DJNZ <byte>,<desplazamiento>
a) REGISTRO b) DIRECTO
DJNZ Rn,desp. DJNZ direc,desp.
Número de Bytes: 2 Número de Bytes: 3
Ciclos de Máquina: 2 Ciclos de Máquina: 2
Codificación: Codificación:
1 1 0 1 1 r r r desp. 1 1 0 1 0 1 0 1 dir. desp.
Operación: Operación:
(Rn) <- (Rn) - 1 (direc.) <- (direc.) - 1
* INC A
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
00000100
Operación: INC
(A) <- (A) + 1
Descripción: Incrementa el dato contenido en el byte indicado,si el valor inicial es 0FFh luego
de la ejecución será 00h.
a) REGISTRO b) DIRECTO
INC Rn INC dir.
Número de Bytes: 1 Número de Bytes: 2
Ciclos de Máquina: 1 Ciclos de Máquina: 1
Codificación: Codificación:
00001rrr 0 0 0 0 0 1 0 1 dirección
Operación: INC Operación: INC
(Rn) <- (Rn) + 1 (dir.) <- (dir.) + 1
* INC DPTR
Número de Bytes: 1
Ciclos de Máquina: 2
Codificación:
10100011
Operación: INC
(DPTR) <- (DPTR) + 1
Descripción: Si el bit indicado es uno, salta a la dirección destino. Caso contrario, ejecuta la
instrucción siguiente.
La dirección destino del salto se obtiene sumando el desplazamiento al valor del PC,
luego de que éste quede apuntando al primer byte de la siguiente instrucción.
El desplazamiento es de ocho bits y se considera en sistema de representación de
complemento a dos, por lo tanto su rango es de -128 a 127.
El bit analizado no se modifica en la ejecución.
Número de Bytes: 3
Ciclos de Máquina: 2
Codificación:
0 0 1 0 0 0 0 0 bit desp.
Operación: JB
(PC) <- (PC) + 3
SI (bit) = 1 => (PC) <- (PC) + desp.
* JBC bit,desp.
Descripción: Si el bit indicado es uno, salta a la dirección destino, colocando en cero dicho
bit. Caso contrario, ejecuta la instrucción siguiente
La dirección destino del salto se obtiene sumando el desplazamiento al valor del PC,
luego de que éste quede apuntando al primer byte de la siguiente instrucción.
El desplazamiento es de ocho bits y se considera en sistema de representación de
complemento a dos, por lo tanto su rango es de -128 a 127.
Número de Bytes: 3
Ciclos de Máquina: 2
Codificación:
0 0 0 1 0 0 0 0 bit desp.
Operación: JBC
(PC) <- (PC) + 3
SI (bit) = 1 => (PC) <- (PC) + desp.
(bit) = 0
Número de Bytes: 2
Ciclos de Máquina: 2
Codificación:
0 1 0 0 0 0 0 0 desp.
Operación: JC
(PC) <- (PC) + 2
SI (C) = 1 => (PC) <- (PC) + desp.
* JMP @A+DPTR
Número de Bytes: 1
Ciclos de Máquina: 2
Codificación:
01110011
Operación: JMP
(PC) <- [(A) + (DPTR)]
* JNB bit,desp.
Descripción: Si el bit indicado es cero, salta a la dirección destino. Caso contrario, ejecuta la
instrucción siguiente.
La dirección destino del salto se obtiene sumando el desplazamiento al valor del PC,
Número de Bytes: 3
Ciclos de Máquina: 2
Codificación:
0 0 1 1 0 0 0 0 bit desp.
Operación: JNB
(PC) <- (PC) + 3
SI (bit) = 0 => (PC) <- (PC) + desp.
* JNC desp.
Número de Bytes: 2
Ciclos de Máquina: 2
Codificación:
0 1 0 1 0 0 0 0 desp.
Operación: JNC
(PC) <- (PC) + 2
SI (C) = 0 => (PC) <- (PC) + desp.
* JNZ desp.
Descripción: Si algún bit del acumulador es uno, salta a la dirección destino. Caso
contrario, ejecuta la instrucción siguiente.
La dirección destino del salto se obtiene sumando el desplazamiento al valor del PC,
luego de que éste quede apuntando al primer byte de la siguiente instrucción.
Número de Bytes: 2
Ciclos de Máquina: 2
Codificación:
0 1 1 1 0 0 0 0 desp.
Operación: JNZ
(PC) <- (PC) + 2
SI (A) <> 0 => (PC) <- (PC) + desp.
* JZ desp.
Descripción: Si todos los bits del acumulador están en cero, salta a la dirección destino.
Caso contrario, ejecuta la instrucción siguiente.
La dirección destino del salto se obtiene sumando el desplazamiento al valor del PC,
luego de que éste quede apuntando al primer byte de la siguiente instrucción.
El desplazamiento es de ocho bits y se considera en sistema de representación de
Complemento a dos.
El acumulador no se modifica en la ejecución.
Número de Bytes: 2
Ciclos de Máquina: 2
Codificación:
0 1 1 0 0 0 0 0 desp.
Operación: JZ
(PC) <- (PC) + 2
SI (A) = 0 => (PC) <- (PC) + desp.
* LCALL Direc 16
Número de Bytes: 3
Ciclos de Máquina: 2
Codificación:
0 0 0 1 0 0 1 0 dir.15-8 dir.7-0
Operación LCALL
(PC) <- (PC) + 3
(SP) <- (SP) + 1
((SP)) <- (PCl)
(SP) <- (SP) + 1
((SP)) <- (PCh)
(PC 15-0) <- dirección especificada
* LJMP Direc 16
Número de Bytes: 3
Ciclos de Máquina: 2
Codificación:
0 0 0 0 0 0 1 0 dir.15-8 dir.7-0
Operación: LJMP
(PC 15-0) <- dirección especificada
Descripción: Carga el byte destino con el contenido del byte fuente, este último no es
afectado.
d) MOV A,#dato
c) MOV A,@Ri
Número de Bytes: 1 Número de Bytes: 2
Ciclos de Máquina: 1 Ciclos de Máquina: 1
Codificación: Codificación:
1110011i 01110100 dato
Operación: MOV Operación: MOV
(A) <- ((Ri)) (A) <- dato
ñ)MOV @Ri,#dato
Número de Bytes: 2
Ciclos de Máquina: 1
Codificación:
0111011i dato
Operación: MOV
((Ri)) <- dato
Descripción: El bit fuente es copiado en el bit destino. Uno de los operandos debe ser el flag de
transporte (C).
* MOV DPTR,#dato 16
Descripción: Es una carga inmediata del registro puntero. La parte mas significativa del dato
se encuentra en el segundo byte de la instrucción, mientras que la menos significativa en el
siguiente.
Esta instrucción es la única que transfiere un dato de 16 bits.
Número de Bytes: 3
Codificación:
1 0 0 1 0 0 0 0 datoh datol
Operación: MOV
(DPTR) <- dato 15-0
(DPH) <- dato 15-8
(DPL) <- dato 7-0
* MOVC A,@A+<reg.base>
Número de Bytes: 1
Ciclos de Máquina: 2
* MUL AB
Función: Multiplicar
Descripción: Realiza una multiplicación entera sin signo, entre el dato almacenado en el
acumulador y el contenido del registro B. Ambos operandos se consideran como números
enteros sin signo. Efectuada la operación, el byte menos significativo del producto es
almacenado en el acumulador y el mas significativo en el registro B.
Si el el producto es mayor que 0FFh (255) el flag de desborde (OV) es puesto a "1", en el
otro caso (OV) = "0".
Flags Afectados: OV, C=0
Número de Bytes: 1
Ciclos de Máquina: 4
Codificación:
10100100
Operación: MUL
(B A) <- (A)*(B)
* NOP
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
00000000
Operación: NOP
(PC) <- (PC) + 1
* ORL <destino>,<fuente>
Descripción: Ejecuta la operación OR bit a bit entre las variables indicadas, almacenando
el resultado en el byte destino. Cuando el destino es el Ac, el operando fuente puede
direccionarse mediante los modos registro, directo, indirecto por registro o inmediato. Cuando
el destino es una dirección de memoria, el operando fuente puede ser un dato inmediato o
el contenido del Acumulador.
a) REGISTRO b) DIRECTO
ORL A,Rn ORL A, dirección
Número de Bytes: 1 Número de Bytes: 2
Ciclos de Máquina: 1 Ciclos de Máquina: 1
Codificación: Codificación:
01001rrr 0 1 0 0 0 1 0 1 dirección
Operación: ORL Operación: ORL
(A) <- (A) OR (Rn) (A) <- (A) OR (dir.)
Nota:
El operando fuente puede ser cualquier bit direccionable de la zona de RAM interna o
alguno de los registros de funciones especiales.
Flags Afectados: C
Número de Bytes: 2
Ciclos de Máquina: 2
a) ORL C,bit b) ORL C,/bit
Codificación: Codificación:
0 1 1 1 0 0 1 0 bit 1 0 1 0 0 0 0 0 bit
Operación: ORL Operación: ORL
(C) <- (C) OR (bit) (C) <- (C) OR Compl.(bit)
* POP dirección
Número de Bytes: 2
Ciclos de Máquina: 2
Codificación:
1 1 0 1 0 0 0 0 dirección
Operación: POP
* PUSH dirección
Número de Bytes: 2
Ciclos de Máquina: 2
Codificación:
1 1 0 0 0 0 0 0 dirección
Operación: PUSH
(SP) <- (SP) + 1
((SP)) <- (dir.)
* RET
Descripción: RET extrae dos bytes de la memoria pila y los transfiere al PC. El puntero de
pila es decrementado en uno, dos veces.
Número de Bytes: 1
Ciclos de Máquina: 2
Codificación:
00100010
Operación: RET
(PCh) <- ((SP))
(SP) <- (SP) - 1
(PCl) <- ((SP))
(SP) <- (SP) - 1
* RETI
Número de Bytes: 1
Ciclos de Máquina: 2
Codificación:
00110010
Operación: RETI
(PCh) <- ((SP))
(SP) <- (SP) - 1
(PCl) <- ((SP))
(SP) <- (SP) - 1
* RL A
Descripción: Los ocho bits del acumulador son rotados a la izquierda, un bit. El bit 7 pasa
al bit 0.
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
00100011
Operación: RL
(An+1) <- (An) n = 0 a 6
(A0) <- (A7)
*RLC A
Descripción: Los ocho bits del acumulador son rotados a la izquierda un bit. El bit 7 pasa
al C y este al bit 0.
Flags Afectados: C
Número de Bytes: 1
Codificación:
00110011
Operación: RL
(An+1) <- (An) n = 0 a 6
(A0) <- (C)
(C) <- (A7)
* RR A
Descripción: Los ocho bits del acumulador son rotados a la derecha un bit. El bit 0 se
transfiere al bit 7.
Número de Bytes: 1
Ciclos de Máquina: 1
Codificacin:
00000011
Operación: RR
(An) <- (An+1) n = 0 a 6
(A7) <- (A0)
* RRC A
Descripción: Los ocho bits del acumulador son rotados a la derecha un bit. El bit 0 pasa al
C y este al bit 7.
Flags Afectados: C
Número de Bytes: 1
Ciclos de Maquina: 1
Codificación:
00010011
Operación: RRC
(An) <- (An+1) n=0 a 6
(A7) <- (C)
(C) <- (A0)
Descripción: El bit indicado es colocado en uno. Opera sobre cualquier bit direccionable en
forma directa.
Flags Afectados: ninguno (salvo el seleccionado)
Número de Bytes: 2
Ciclos de Máquina: 1
Codificación:
1 1 0 1 0 0 1 0 bit selec.
Operación: SETB
(bit) <- 1
*SETB C
Flags Afectados: C
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
11010011
Operación: SETB
(C) <- 1
* SJMP desp.
Número de Bytes: 2
Ciclos de Máquina: 2
Operación: SJMP
(PC) <- (PC) + 2
(PC) <- (PC) + desp.
a) REGISTRO b) DIRECTO
SUBB A,Rn SUBB A,dirección
Número de Bytes: 1 Número de Bytes: 2
Ciclos de Máquina: 1 Ciclos de Máquina: 1
Codificación: Codificación:
10011rrr 1 0 0 1 0 1 0 1 dirección
Operación: SUBB Operación: SUBB
(A) <- (A) - (Rn) - C (A) <- (A) - (dir.) - C
* SWAP A
Descripción: SWAP A intercambia en el acumulador los cuatro bits menos significativos con
los cuatro más significativos. La instrucción se puede interpretar como una rotación de
cuatro bits.
Número de Bytes: 1
Ciclos de Máquina: 1
Codificación:
11000100
Operación: SWAP
(A3-0) <-> (A7-4)
a) REGISTRO b) DIRECTO
XCH A,Rn XCH A,dirección
Nmero de Bytes: 1 Número de Bytes: 2
Ciclos de Mquina: 1 Ciclos de Máquina: 1
Codificación: Codificación:
11001rrr 1 1 0 0 0 1 0 1 dirección
Operación: XCH Operación: XCH
(A) <-> (Rn) (A) <-> (dir.)
* XCHD A,@Ri
Descripción: Intercambia los cuatro bits menos significativos delAcumulador con los
correspondientes del indicado en la instrucción, el cual es direccionado en forma
indirecta por alguno de los registros.
Los cuatro bits más significativos de ambos operandos no son modificados.
Ciclos de Máquina: 1
Codificación:
1101011i
Operación: XCHD
(A3-0) <-> ((Ri)3-0)
* XRL <destino>,<fuente>
Descripción: Ejecuta la operación OR-EX bit a bit entre las variables indicadas,
almacenando el resultado en el byte destino. Cuando el destino es el Ac, el operando
fuente puede direccionarse mediante los modos registro, directo, indirecto por registro o
inmediato. Cuando el destino es una dirección de memoria el operando fuente puede ser un
dato inmediato o el contenido del Acumulador.
a) REGISTRO b) DIRECTO
XRL A,Rn XRL A, dirección
Número de Bytes: 1 Número de Bytes: 2
Ciclos de Máquina: 1 Ciclos de Máquina: 1
Codificación: Codificación:
01101rrr 0 1 1 0 0 1 0 1 dirección
Operación: XRL Operación: XRL
(A) <- (A) OR-EX (Rn) (A) <- (A) OR-EX (dir.)