set de instrucciones familia mcs 51dea.unsj.edu.ar/mp1/apuntes/06 set de instrucciones...

30
MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 1 SET DE INSTRUCCIONES FAMILIA MCS 51 SET DE INSTRUCCIONES 1.1 DESCRIPCION Se describe en los párrafos siguientes el Set de Instrucciones de la familia del microcomputador 8051. En el desarrollo del mismo se utilizo la siguiente nomenclatura: 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.

Upload: others

Post on 13-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 1

SET DE INSTRUCCIONES FAMILIA MCS 51 SET DE INSTRUCCIONES 1.1 DESCRIPCION Se describe en los párrafos siguientes el Set de Instrucciones de la familia del microcomputador 8051. En el desarrollo del mismo se utilizo la siguiente nomenclatura: 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.

Page 2: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 2

1.2 INSTRUCCIONES QUE AFECTAN LOS FLAGS DEL PSW 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. 1.3 DESCRIPCION DE LAS INSTRUCCIONES * ACALL Direc 11 Función: Llamado a Subrutina (Direccionamiento Directo) Descripción: ACALL es un llamado a subrutina incondicional. En la ejecución de la instrucción, el contenido del PC se incrementa dos veces y este valor (direccion de retorno) se almacena en la memoria pila en dos lugares, (el byte menos significativo primero), para lo cual el puntero de pila (SP) se incrementa dos veces. La dirección destino se forma con los 5 bits mas significativos del PC incrementado y los 11 bits contenidos en la instrucción. Debido a esto es que el máximo salto posible es de 2 Kbytes. Flags Afectados: ninguno 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

Page 3: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 3

((SP)) <- (PCH) (PC 10-0) <- dirección especificada * ADD A, <byte fuente> Función: Suma Descripción: Suma el dato indicado en el byte fuente, con el contenido del Acumulador, dejando el resultado en este. Flags afectados: CY, AC, OV. Direccionamiento: Se permiten cuatro modos de direccionamiento, a saber: a) REGISTRO b) DIRECTO ADD A,Rn Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 0 0 1 0 1 r r r Operación: ADD (A) <- (A) + (Rn)

ADD A, dirección Número de Bytes: 2 Ciclos de Máquina: 1 Codificación: 0 0 1 0 0 1 1 1 dirección peración: ADD (A) <- (A) + (dir.)

c) INDIRECTO por REGISTRO d) INMEDIATO ADD A,@Ri Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 0 0 1 0 0 1 1 i Operación: ADD (A) <- (A) + ((Ri))

ADD A,#dato Número de Bytes: 2 Ciclos de Máquina: Codificación: 0 0 1 0 0 1 0 0 d a t o Operación: ADD (A) <- (A) + dato

* ADDC A, <byte fuente> Función: Suma con Acarreo (Carry) Descripción: Suma el dato indicado en el byte fuente, con el contenido del Acumulador mas el transporte, dejando el resultado en el Acumulador. Flags afectados: CY, AC, OV. Direccionamiento: Se permiten cuatro modos de direccionamiento, a saber: a) REGISTRO b) DIRECTO ADDC A,Rn ADDC A, dirección Número de Bytes: 1 Número de Bytes: 2

Page 4: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 4

Ciclos de Máquina: 1 Ciclos de Máquina: 1 Codificación: Codificación: 0 0 1 1 1 r r r 0 0 1 1 0 1 0 1 dirección Operación: ADDC Operación: ADDC (A) <- (A) + (Rn) + Cy (A) <- (A) + (dir.) + Cy c) INDIRECTO por REGISTRO. d) INMEDIATO ADDC A,@Ri ADDC A,#dato Numero de Bytes: 1 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 1 Codificación: Codificación: 0 0 1 1 0 1 1 i 0 0 1 1 0 1 0 0 d a t o Operación: ADDC Operación: ADD C (A) <- (A) + ((Ri)) + Cy (A) <- (A) + dato + Cy * AJMP Direc 11 Función: Salto Incondicional (Direccionamiento Directo) Descripción: AJMP transfiere la ejecución del programa a la dirección indicada, la cual se forma con los 5 BMS del PC incrementado 2 veces, y los 11 bits contenidos en la instrucción. Debido a esto es que el máximo salto posible es de 2 Kbytes. Flags Afectados: ninguno Número de Bytes: 2 Ciclos de Máquina: 2 Codificación:

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> Función: Realiza la operación lógica AND (Y) entre dos bytes. 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.

Page 5: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 5

Flags Afectados: ninguno Direccionamiento: Permite la utilización de cuatro modos segó sea el registro destino, a saber: I) Operando Destino: Acumulador 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: 0 1 0 1 1 r r r 0 1 0 1 0 1 0 1 dirección Operación: ANL Operación: ANL (A) <- (A) ^ (Rn) (A) <- (A) ^ (dir.) c) INDIRECTO por REGISTRO d) INMEDIATO ANL A,@Ri ANL A,#dato Número de Bytes: 1 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 1 Codificación: Codificación: 0 1 0 1 0 1 1 i 0 1 0 1 0 1 0 0 d a t o Operación: ANL Operación: ANL (A) <- (A) ^ ((Ri)) (A) <- (A) ^ dato II) Operando Destino: Dirección de Memoria a) REGISTRO (Acumulador) b) INMEDIATO ANL dir,A ANL dir,#dato Número de Bytes: 2 Número de Bytes: Ciclos de Máquina: 1 Ciclos de Máquina: Codificación: Codificación: 0 1 0 1 0 0 1 0 dirección 0 1 0 1 0 0 1 1 dir. dato Operación: ANL Operación: ANL (dir.) <- (dir.) ^ (A) (dir) <- (dir.) ^ #dato * ANL C,<bit fuente> Función: Realiza la operación lógica AND (Y) entre el flag de transporte y el fuente. Descripción: El resultado de la operación AND realizada se carga en el flag de transporte. Si en el assembler se antepone una "/" al bit fuente, el valor considerado para la operación será su complemento. No afecta al bit 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.

Page 6: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 6

Flags Afectados: Cy Número de Bytes: 2 Ciclos de Máquina: 2 a) ANL C,bit b) ANL C,/bit Codificación: Codificación: 1 0 0 0 0 0 1 0 bit 1 0 1 1 0 0 0 0 bit Operación: ANL Operación: ANL (C) <- (C) ^ (bit) (C) <- (C) ^ Compl.(bit) * CJNE <destino>, <fuente>, desplazamiento Función: Compara y salta si no son iguales. 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: a) CJNE A,dir.,desp. b) CJNE A,#dato,desp. Codificación: Codificación: 1 0 1 1 0 1 0 1 dir. desp 1 0 1 1 0 1 0 0 dato desp. Operación: CJNE Operación: CJNE (A) - (dir.) (A) - dato c) CJNE Rn,#dato,desp. d) CJNE @Ri,#dato,desp. Codificación: Codificación: 1 0 1 1 1 r r r dato desp. 1 0 1 1 0 1 1 i dato desp. Operación: CJNE Operación: CJNE (Rn) - dato ((Ri)) - dato

Page 7: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 7

* CLR A Función: Pone en cero el acumulador. Descripción: Todos los bits del acumulador son colocados en cero. Flags Afectados: ninguno Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 1 1 1 0 0 1 0 0 Operación: CLR (A) <- 0 * CLR bit Función: Pone en cero un bit. Descripción: El bit indicado es colocado en cero. 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 0 0 0 1 0 dir. bit Operación: CLR (bit) <- 0 * CLR C Función: Pone en cero el flag de transporte. Descripción: El flag de transporte (C) es colocado en cero. Flags Afectados: C Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 1 1 0 0 0 0 1 1 Operación: CLR (C) <- 0

Page 8: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 8

* CPL A Función: Complemento a "1" del Acumulador. Descripción: Todos los bits del Acumulador son complementados booleanamente. Flags Afectados: ninguno Número de Bytes: 1 Ciclos de Maquina: 1 Codificación: 1 1 1 1 0 1 0 0 Operación: CPL (A) <- Comp.(A) * CPL bit Función: Complemento a "1" del bit seleccionado. Descripción: El bit indicado es complementado booleanamente. 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 0 1 1 0 0 1 0 bit Operación: CPL (bit) <- Comp.(bit) * CPL C Función: Complemento a "1" del bit de Transporte. Descripción: El flag de transporte es complementado booleanamente. Flags Afectados: C Número de Bytes: 1 Ciclos de Máquina: 1 Codificación:

Page 9: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 9

1 0 1 1 0 0 1 1 Operación: CPL (C) <- Comp.(C) * DA A Función: Realiza el Ajuste Decimal del Acumulador para sumar en BCD. Descripción: DA A, ajusta el valor del dato de 8 bits contenido en el Acumulador, resultante de la Suma de dos datos expresados en BCD, produciendo como resultado dos dígitos BCD. Esta Instrucción puede ser utilizada luego de alguna de las instrucciones de suma ADD o ADDC. Nota: La instrucción DA A "NO" convierte el valor de un dato hexadecimal contenido en el acumulador a decimal, tampoco debe utilizarse esta instrucción luego de una resta ni incremento. Flags Afectados: C Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 1 1 0 1 0 1 0 0 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 Función: Decrementa el dato contenido en el acumulador. Descripción: Decrementa el dato contenido en el acumulador. Si el valor inicial es 00h, luego de la ejecución será 0FFh. Flags Afectados: ninguno Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 0 0 0 1 0 1 0 0 Operación: DEC (A) <- (A) - 1

Page 10: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 10

* DEC byte Función: Decrementa el dato contenido en el byte especificado. Descripción: Decrementa el dato contenido en el byte indicado, si el valor inicial es 00h, luego de la ejecución será 0FFh. Flags Afectados: ninguno Direccionamiento: Contempla tres modos de direccionamiento, a saber: 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: 0 0 0 1 1 r r r 0 0 0 1 0 1 0 1 dirección Operación: DEC Operación: DEC (Rn) <- (Rn) - 1 (dir.) <- (dir.) - 1 c) INDIRECTO por REGISTRO. DEC @Ri Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 0 0 0 1 0 1 1 i Operación: DEC ((Ri)) <- ((Ri)) - 1 * DIV AB Función: Dividir. Descripción: Realiza una división entera, donde el dividendo es el dato almacenado en el acumulador y el divisor es el contenido del registro B. Ambos operandos se consideran como números enteros sin signo. Efectuada la operación, el cociente entero es almacenado en el acumulador y el resto en el registro B. Si el divisor (B) es cero, los valores entregados en los registros A y B no deben tenerse en cuenta (son indefinidos) y el flag de desborde (OV) es puesto a "1". Flags Afectados: OV, C=0 Número de Bytes: 1 Ciclos de Máquina: 4 Codificación:

Page 11: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 11

1 0 0 0 0 1 0 0 Operación: DIV (A) <- parte entera (A) / (B) (B) <- (A) - [ parte entera (A) / (B) ] * (B) * DJNZ <byte>,<desplazamiento> Función: Decrementa y salta si no es cero. Descripción: DJNZ decrementa la variable indicada en la instrucción, saltando si el valor obtenido no es cero. 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. Flags Afectados: Ninguno Direccionamiento: El byte decrementado puede ser un registro o un lugar de memoria direccionado en forma directa. 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 Función: Incrementa el dato contenido en el Acumulador. Descripción: Incrementa el dato contenido en el Acumulador, si el valor inicial es 0FFh, luego de la ejecución será 00h. Flags Afectados: ninguno Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 0 0 0 0 0 1 0 0 Operación: INC (A) <- (A) + 1

Page 12: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 12

* INC byte Función: Incrementa el dato contenido en el byte especificado Descripción: Incrementa el dato contenido en el byte indicado,si el valor inicial es 0FFh luego de la ejecución será 00h. Flags Afectados: ninguno Direccionamiento: Contempla tres modos de direccionamiento, a saber: 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: 0 0 0 0 1 r r r 0 0 0 0 0 1 0 1 dirección Operación: INC Operación: INC (Rn) <- (Rn) + 1 (dir.) <- (dir.) + 1 c) INDIRECTO por REGISTRO. INC @Ri Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 0 0 0 0 0 1 1 i Operación: INC ((Ri)) <- ((Ri)) + 1 * INC DPTR Función: Incrementa el puntero de datos ( DPTR ) Descripción: Incrementa en uno el dato de 16 bits contenido en el DPTR. Flags Afectados: ninguno Número de Bytes: 1 Ciclos de Máquina: 2 Codificación: 1 0 1 0 0 0 1 1 Operación: INC (DPTR) <- (DPTR) + 1

Page 13: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 13

* JB bit,desp. Función: Salta si el bit especificado es uno. 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. Flags Afectados: ninguno. 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. Función: Salta si el bit especificado es uno y lo pone en cero. 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. Flags Afectados: ninguno. (Salvo si el bit pertenece al PSW). 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

Page 14: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 14

* JC desp. Función: Salta si C es uno. Descripción: Si el flag de transporte (C) 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. Flags Afectados: ninguno. 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 Función: Salto Incondicional Indirecto. Descripción: Es una bifurcación incondicional. La dirección destino se obtiene sumando el (A) (considerado como número sin signo), con los 16 bits del DPTR, este resultado se almacena en el PC. No modifica los contenidos del A ni del DPTR. Flags Afectados: ninguno. Número de Bytes: 1 Ciclos de Máquina: 2 Codificación: 0 1 1 1 0 0 1 1 Operación: JMP (PC) <- [(A) + (DPTR)] * JNB bit,desp. Función: Salta si el bit especificado es cero. 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,

Page 15: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 15

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. Flags Afectados: ninguno. 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. Función: Salta si C es cero. Descripción: Si el flag de transporte (C) 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, 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. Flags Afectados: ninguno. 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. Función: Salta si A no es cero. 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.

Page 16: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 16

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 acumulador no se modifica en la ejecución. Flags Afectados: ninguno. 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. Función: Salta si A es cero. 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. Flags Afectados: Ninguno 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 Función: Llamado a Subrutina (Direccionamiento Directo Largo) Descripcin: LCALL, es un llamado a subrutina incondicional. En la ejecución de la instrucción, el contenido del PC se incrementa tres veces y este valor (dirección de retorno) se almacena en la memoria pila en dos lugares, (el byte menos significativo primero), para lo cual el puntero de pila (SP) se incrementa dos veces. La dirección destino (de 16 bits), forma parte de la instrucción, es por ello que la ubicación de la subrutina puede ser cualquiera dentro del campo direccionable de la memoria de programa.

Page 17: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 17

Flags Afectados: ninguno 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 Función: Salto incondicional (Direccionamiento Directo Largo) Descripción: LJMP, es una bifurcación incondicional a la dirección especificada en la instrucción. La dirección de salto (de 16 bits), forma parte de la instrucción, es por ello que la dirección destino puede ser cualquiera dentro del campo direccionable de la memoria de programa. Flags Afectados: ninguno 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 * MOV <byte destino>,<byte fuente> Función: Transfiere un byte. Descripción: Carga el byte destino con el contenido del byte fuente, este último no es afectado. Flags Afectados: ninguno

Page 18: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 18

Direccionamiento: Es la operación mas flexible del set de instrucciones y permite 15 combinaciones de los modos de direccionamiento posibles. A saber: a) MOV A,Rn b) MOV A, dir. Número de Bytes: 1 Número de Bytes: 2 los de Máquina: 1 CicCiclos de Máquina: 1 Codificación: Codificación: 1 1 1 0 1 r r r 1 1 1 0 0 1 0 1 dirección Operación: MOV Operación: MOV (A) <- (Rn) (A) <- (dir.) c) MOV A,@Ri

d) MOV A,#dato

Número de Bytes: 1 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 1 Codificación: Codificación: 1 1 1 0 0 1 1 i 0 1 1 1 0 1 0 0 d a t o Operación: MOV Operación: MOV (A) <- ((Ri)) (A) <- dato e) MOV Rn,A f) MOV Rn,dir. Número de Bytes: 1 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 2 Codificación: Codificación: 1 1 1 1 1 r r r 1 0 1 0 1 r r r dirección Operación: MOV Operación: MOV (Rn) <- (A) (Rn) <- (dir.) g) MOV Rn,#dato h) MOV dir.,A Número de Bytes: 2 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 1 Codificación: Codificación: 0 1 1 1 1 r r r d a t o 1 1 1 1 0 1 0 1 dirección Operación: MOV Operación: MOV (Rn) <- dato (dir.) <- (A) i) MOV dir.,Rn j) MOV dir.d,dir.f. 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 0 0 0 1 r r r dirección 1 0 0 0 0 1 0 1 dir.f. dir.d. Operación: MOV Operación: MOV (dir) <- (Rn) (dir.d) <- (dir.f) k) MOV dir.,@Ri l) MOV dir.,#dato 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 0 0 0 0 1 1 i 0 1 1 1 0 1 0 1 dir. dato

Page 19: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 19

Operación: MOV Operación: MOV (dir.) <- ((Ri)) (dir.) <- dato m) MOV @Ri,A n) MOV @Ri,dir. Número de Bytes: 1 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 2 Codificación: Codificación: 1 1 1 1 0 1 1 i 1 0 1 0 0 1 1 i dirección Operación: MOV Operación: MOV ((Ri)) <- (A) ((Ri)) <- (dir.) ñ)MOV @Ri,#dato Número de Bytes: 2 Ciclos de Máquina: 1 Codificación: 0 1 1 1 0 1 1 i d a t o Operación: MOV ((Ri)) <- dato * MOV <bit destino>,<bit fuente> Función: Transfiere un bit. Descripción: El bit fuente es copiado en el bit destino. Uno de los operandos debe ser el flag de transporte (C). Flags Afectados: ninguno (salvo el bit destino) a) MOV C,bit b) MOV bit,C Numero de Bytes: 2 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 2 Codificación: Codificación: 1 0 1 0 0 0 1 0 bit 1 0 0 1 0 0 1 0 bit Operación: MOV Operación: MOV (C) <- (bit) (bit) <- (C) * MOV DPTR,#dato 16 Función: Carga el puntero de datos con una constante de 16 bits. 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. Flags Afectados: ninguno Número de Bytes: 3

Page 20: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 20

Ciclos de Máquina: 2 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> Función: Transfiere al A un byte de código. Descripción: La instrucción carga el Acumulador con un byte de la memoria de programa. La dirección del byte fuente se obtiene sumando el (A) sin signo con el contenido del registro base de 16 bits. El registro base puede ser el DPTR o el PC. En este último caso se debe tener en cuenta que el (PC) es incrementado a la próxima instrucción antes de ser sumado con el Acumulador. Flags Afectados: ninguno. Número de Bytes: 1 Ciclos de Máquina: 2 a) MOVC A,@A+DPTR b) MOVC A,@A+PC Codificación: Codificación: 1 0 0 1 0 0 1 1 1 0 0 0 0 0 1 1 Operación: MOVC Operación: MOVC (A) <- ((A)+(DPTR)) (PC) <- (PC)+1 (A) <- ((A)+(PC)) * MOVX <byte destino>,<byte fuente> Función: Transfiere a memoria externa. Descripción: La instrucción MOVX transfiere datos entre el acumulador y un byte de la memoria RAM externa. Existen dos formas de utilizar la instrucción, su diferencia se manifiesta en la longitud de la dirección indirecta que provee a la RAM externa, la cual puede ser de 8 o 16 bits. En el primer tipo, el contenido de R0 ó R1 proveen una dirección de 8 bits, la que es sacada por P0 en forma multiplexada con los datos correspondientes a esta puerta. Estos 8 bits pueden ser suficientes cuando se desea expandir el n�£�mero de puertas de E/S o cuando se necesita utilizar una RAM de baja capacidad. En la otra forma de utilizar la instrucci�¢�n, el puntero de datos (DPTR) genera una dirección de 16 bits, por la puerta P2 sale el byte mas significativo (DPH) mientras que por P0 aparece la parte baja (DPL) multiplexado con los datos datos correspondientes a esa puerta. El registro de funciones especiales P2 retiene su contenido anterior mientras que el buffer de salida

Page 21: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 21

muestra el (DPH). Esta forma es mas rápida y eficiente para acceder a arreglos de datos, ya que no es necesaria otra instrucción para configurar las puertas de salida. Flags Afectados: Ninguno a) MOVX A,@Ri b) MOVX A,@DPTR Número de Bytes: 1 Número de Bytes: 1 Ciclos de Máquina: 2 Ciclos de Máquina: 2 Codificación: Codificación: 1 1 1 0 0 0 1 i 1 1 1 0 0 0 0 0 Operación: MOVX Operación: MOVX (A) <- ((Ri)) (A) <- ((DPTR)) c) MOVX @Ri,A d) MOVX @DPTR,A Número de Bytes: 1 Número de Bytes: 1 Ciclos de Máquina: 2 Ciclos de Máquina: 2 Codificación: Codificación: 1 1 1 1 0 0 1 i 1 1 1 1 0 0 0 0 Operación: MOVX Operación: MOVX ((Ri)) <- (A) ((DPTR)) <- (A) * 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: 1 0 1 0 0 1 0 0 Operación: MUL (B A) <- (A)*(B) * NOP Función: No realiza operación

Page 22: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 22

Descripción: La ejecución continúa en la siguiente instrucción, salvo el PC ningún otro registro es modificado. Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 0 0 0 0 0 0 0 0 Operación: NOP (PC) <- (PC) + 1 * ORL <destino>,<fuente> Función: Realiza la operación lógica OR (O) entre dos bytes. 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. Flags Afectados: ninguno Direccionamiento: Permite la utilización de cuatro modos de direccionamiento según sea el registro destino, a saber: I) Operando Destino: 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: 0 1 0 0 1 r r r 0 1 0 0 0 1 0 1 dirección Operación: ORL Operación: ORL (A) <- (A) OR (Rn) (A) <- (A) OR (dir.) c) INDIRECTO por REGISTRO d) INMEDIATO ORL A,@Ri ORL A,#dato Número de Bytes: 1 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 1 Codificación: Codificación: 0 1 0 0 0 1 1 i 0 1 0 0 0 1 0 0 d a t o Operación: ORL Operación: ORL (A) <- (A) OR ((Ri)) (A) <- (A) OR dato II) Operando Destino: Dirección de Memoria a) REGISTRO (ACUMULADOR) b) INMEDIATO

Page 23: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 23

ORL dir.,A ORL dir.,#dato Número de Bytes: 2 Número de Bytes: 3 Ciclos de Máquina: 1 Ciclos de Máquina: 2 Codificación: Codificación: 0 1 0 0 0 0 1 0 dirección 0 1 0 0 0 0 1 1 dir. dato Operación: ORL Operación: ORL (dir.) <- (dir.) OR (A) (dir.) <- (dir.) OR dato * ORL C,<bit fuente> Función: Realiza la operación lógica OR (O) entre el flag de transporte y el fuente. Descripción: El resultado de la operación realizada se carga en el flag de transporte. Si en el assembler se antepone una "/" al bit fuente, el valor considerado para la operación será su complemento. 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 Función: Extrae un dato de la memoria de Pila. Descripción: El dato contenido en el lugar de memoria RAM interna direccionado por el Puntero de Pila (SP) es transferido al byte uya dirección se especifica en la instrucción. El puntero de pila es decrementado en 1. Flags Afectados: Ninguno 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

Page 24: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 24

(dir.) <- ((SP)) (SP) <- (SP) - 1 * PUSH dirección Función: Almacena un dato en la memoria Pila Descripción: El dato contenido en el byte cuya dirección se especifica en la instrucci�¢�n, es transferido al lugar de memoria RAM interna direccionado por el Puntero de Pila (SP), luego que este es incrementado en 1. Flags Afectados: Ninguno 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 Función: Retorno de Subrutina. 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. Flags Afectados: Ninguno Número de Bytes: 1 Ciclos de Máquina: 2 Codificación: 0 0 1 0 0 0 1 0 Operación: RET (PCh) <- ((SP)) (SP) <- (SP) - 1 (PCl) <- ((SP)) (SP) <- (SP) - 1 * RETI Función: Retorno de Interrupción.

Page 25: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 25

Descripción: RETI extrae dos bytes de la memoria pila transfiriéndolos al PC y restablece la lógica de interrupciones para aceptar nuevas interrupciones del mismo nivel de prioridad de la atendida. No afecta otros registros, pero el PSW no recupera el valor que tenía antes de producirse la interrupción. El puntero de pila es decrementado en uno, dos veces. Flags Afectados: Ninguno Número de Bytes: 1 Ciclos de Máquina: 2 Codificación: 0 0 1 1 0 0 1 0 Operación: RETI (PCh) <- ((SP)) (SP) <- (SP) - 1 (PCl) <- ((SP)) (SP) <- (SP) - 1 * RL A Función: Rota el Acumulador a la Izquierda. Descripción: Los ocho bits del acumulador son rotados a la izquierda, un bit. El bit 7 pasa al bit 0. Flags Afectados: Ninguno Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 0 0 1 0 0 0 1 1 Operación: RL (An+1) <- (An) n = 0 a 6 (A0) <- (A7) *RLC A Función: Rota el Acumulador a la izquierda a través del carry (C). 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

Page 26: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 26

Ciclos de Máquina: 1 Codificación: 0 0 1 1 0 0 1 1 Operación: RL (An+1) <- (An) n = 0 a 6 (A0) <- (C) (C) <- (A7) * RR A Función: Rota el Acumulador a la derecha. Descripción: Los ocho bits del acumulador son rotados a la derecha un bit. El bit 0 se transfiere al bit 7. Flags Afectados: Ninguno Número de Bytes: 1 Ciclos de Máquina: 1 Codificacin: 0 0 0 0 0 0 1 1 Operación: RR (An) <- (An+1) n = 0 a 6 (A7) <- (A0) * RRC A Función: Rota el acumulador a la derecha a través del carry (C). 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: 0 0 0 1 0 0 1 1 Operación: RRC (An) <- (An+1) n=0 a 6 (A7) <- (C) (C) <- (A0)

Page 27: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 27

* SETB <bit> Función: Pone en uno un bit. 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 Función: Pone en uno el flag de transporte. Descripción: El flag de transporte (C) es colocado en uno. Flags Afectados: C Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 1 1 0 1 0 0 1 1 Operación: SETB (C) <- 1 * SJMP desp. Función: Salto incondicional corto. Descripción: Es un salto incondicional relativo. La dirección destino del salto se obtiene sumando el desplazamiento especificado en la instrucci�¢�n, al PC, luego de incrementarlo dos veces. 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. Flags Afectados: Ninguno Número de Bytes: 2 Ciclos de Máquina: 2 Operación: SJMP (PC) <- (PC) + 2 (PC) <- (PC) + desp.

Page 28: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 28

* SUBB A, <byte fuente> Función: Resta con Borrow. Descripción: Resta del contenido del acumulador (minuendo), el dato indicado en la instrucción y el flag de carry (sustraendo), dejando el resultado en el acumulador. Flags afectados: CY, AC, OV. Direccionamiento: Se permiten cuatro modos de direccionamiento, a saber: 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: 1 0 0 1 1 r r r 1 0 0 1 0 1 0 1 dirección Operación: SUBB Operación: SUBB (A) <- (A) - (Rn) - C (A) <- (A) - (dir.) - C c) INDIRECTO por REGISTRO. d) INMEDIATO SUBB A,@Ri SUBB A,#dato Número de Bytes: 1 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 1 Codificación: Codificación: 1 0 0 1 0 1 1 i 1 0 0 1 0 1 0 0 d a t o Operación: SUBB Operación: SUBB (A) <- (A) - ((Ri)) - C (A) <- (A) - dato - C * SWAP A Función: Intercambia los nibbles del acumulador. 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. Flags Afectados: Ninguno Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 1 1 0 0 0 1 0 0 Operación: SWAP (A3-0) <-> (A7-4)

Page 29: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 29

*XCH A,<byte> Función: Intercambia el Acumulador con el byte especificado. Descripción: Intercambia el byte contenido en el Acumulador con el especificado en la instrucción. Flags Afectados: ninguno Direccionamiento: Se permiten tres modos para direccionar el byte, a saber: 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: 1 1 0 0 1 r r r 1 1 0 0 0 1 0 1 dirección Operación: XCH Operación: XCH (A) <-> (Rn) (A) <-> (dir.) c) INDIRECTO por REGISTRO. XCH A,@Ri Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 1 1 0 0 0 1 1 i Operación: XCH (A) <-> ((Ri)) * XCHD A,@Ri Función: Intercambia un nibble del Acumulador con el byte especificado. 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. Flags Afectados: ninguno Número de Bytes: 1 Ciclos de Máquina: 1 Codificación: 1 1 0 1 0 1 1 i Operación: XCHD (A3-0) <-> ((Ri)3-0) * XRL <destino>,<fuente>

Page 30: SET DE INSTRUCCIONES FAMILIA MCS 51dea.unsj.edu.ar/mp1/APUNTES/06 Set de Instrucciones uC8051.pdf · El salto estará dentro de la misma pagina de 2 kbytes de la memoria de programa

MICROPROCESADORES II Ing. Carlos G. Gil, Ing.Gustavo Ensinck 30

Función: Realiza la operación lógica OR-EXCLUSIVO entre dos bytes. 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. Flags Afectados: ninguno Direccionamiento: Permite la utilización de cuatro modos de direccionamiento según sea el registro destino, a saber: I) Operando Destino: 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: 0 1 1 0 1 r r r 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.) c) INDIRECTO por REGISTRO d) INMEDIATO XRL A,@Ri XRL A,#dato Número de Bytes: 1 Número de Bytes: 2 Ciclos de Máquina: 1 Ciclos de Máquina: 1 Codificación: Codificación: 0 1 1 0 0 1 1 i 0 1 1 0 0 1 0 0 d a t o Operación: XRL Operación: XRL (A) <- (A) OR-EX ((Ri)) (A) <- (A) OR-EX dato II) Operando Destino: Dirección de Memoria a) REGISTRO (Acumulador) b) INMEDIATO XRL dir.,A XRL dir.,#dato Número de Bytes: 2 Número de Bytes: 3 Ciclos de Máquina: 1 Ciclos de Máquina: 2 Codificación: Codificación: 0 1 1 0 0 0 1 0 dirección 0 1 1 0 0 0 1 1 dir. dato Operación: XRL Operación: XRL (dir.) <- (dir.) OR-EX (A) (dir.) <- (dir.) OR-EX dato