Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego...

53
Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones ACALL Absolute Call ADD Add Accumulator ADDC Add Accumulator with Carry AJMP Absolute Jump ANL Logical AND for byte variables ANL bit Logical AND for bit variables CJNE Compare and Jump if Not Equal CLR A Clear Accumulator CLR bit Clear bit CPL A Complement Accumulator CPL bit Complement bit DA Decimal Adjust of Accumulator DEC Decrement Register DIV Divide Accumulator by B DJNZ Decrement Register and Jump if Not Zero INC Increment Register JB Jump if Bit Set JBC Jump if Bit Set and Clear Bit JC Jump if Carry Set JMP @ Jump indirect to Address JNB Jump if Bit Not Set JNC Jump if Carry Not Set JNZ Jump if Accumulator Not Zero JZ Jump if Accumulator Zero LCALL Long Call LJMP Long Jump MOV Move byte variable MOV bit Move bit

Transcript of Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego...

Page 1: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Conjunto de Instrucciones en lenguaje ensamblador

Lista Alfabética de Instrucciones

ACALL Absolute Call

ADD Add Accumulator

ADDC Add Accumulator with Carry

AJMP Absolute Jump

ANL Logical AND for byte variables

ANL bit Logical AND for bit variables

CJNE Compare and Jump if Not Equal

CLR A Clear Accumulator

CLR bit Clear bit

CPL A Complement Accumulator

CPL bit Complement bit

DA Decimal Adjust of Accumulator

DEC Decrement Register

DIV Divide Accumulator by B

DJNZ Decrement Register and Jump if Not Zero

INC Increment Register

JB Jump if Bit Set

JBC Jump if Bit Set and Clear Bit

JC Jump if Carry Set

JMP @ Jump indirect to Address

JNB Jump if Bit Not Set

JNC Jump if Carry Not Set

JNZ Jump if Accumulator Not Zero

JZ Jump if Accumulator Zero

LCALL Long Call

LJMP Long Jump

MOV Move byte variable

MOV bit Move bit

Page 2: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

MOVC Move Code Memory

MOVX Move External Memory

MUL Multiply Accumulator by B

NOP No Operation

ORL Logical OR for byte variables

ORL bit Logical OR for bit variables

POP Pop From Stack

PUSH Push Onto Stack

RET Return From Subroutine

RETI Return From Interrupt

RL Rotate Accumulator Left

RLC Rotate Accumulator Left Through Carry

RR Rotate Accumulator Right

RRC Rotate Accumulator Right Through Carry

SETB Set Bit

SJMP Short Jump

SUBB Subtract From Accumulator With Borrow

SWAP Swap Accumulator Nibbles

XCH Exchange Bytes

XCHD Exchange Digits

XRL Exclusive OR

?? Undefined Instruction

La información se proporciona "como es", sin garantía.

Page 3: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: ACALL

Función: Llamada absoluta dentro de un bloque de 2K

Sintaxis: ACALL dir_11

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

ACALL dir_11 a10 a9 a8 1 0 0 0 0 dir 7-0 2 2 -

Operación: ACALL

(PC) <= (PC) + 2 (SP) <= (SP) + 1 ((SP)) <= (PC7-0) (SP)<= (SP) + 1 ((SP)) <= (PC15-8) (PC10-0) <= dir_11

Descripción: ACALL realiza una llamada incondicional a la subrutina situada en la dirección indicada. ACALL incrementa el PC (Program Counter) dos veces para obtener la dirección de la siguiente instrucción, luego guarda dicha dirección en la pila (el byte de menor peso en primer lugar). En consecuencia el apuntador de pila (SP o Stack Pointer) incrementa su valor en 2. Posteriormente el control del programa se transfiere a la dirección indicada en la instrucción.

La dirección de salto, o nuevo valor para el PC se obtiene uniendo a los 5 bits de mayor peso del PC ya incrementado, los bits 7-5 del código de operación y el segundo byte de la instrucción.

Como la instrucción ACALL sólo afecta a los 11 bits de menor peso del PC, la llamada siempre se produce a una dirección de memoria de código situada dentro del bloque de 2 K al que pertenece el primer byte de la instrucción que sigue al ACALL.

Véase también: LCALL, RET

Contenido>Indice>Intro Instrucciones

Page 4: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: ADD

Función: Suma el operando implicado al ACC y deja el resultado en ACC

Sintaxis: ADD A,operando

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

ADD A,Rn 0 0 1 0 1 r r r - 1 1 C-AC-OV

ADD A,direcc 0x25 direcc 2 1 C-AC-OV

ADD A,@Ri 0 0 1 0 0 1 1 i - 1 1 C-AC-OV

ADD A,#dato 0x24 dato 2 1 C-AC-OV

Operación: ADD A,operando

(A)<= (A) + operando

Descripción: ADD suma el valor del operando al valor del Acumulador, y deja el resultado en el Acumulador. El valor del operando no resulta afectado.

El bit de acarreo (C) se pone a uno si hay llevada desde el bit 7. Es decir, si el resultado de la suma pasa de 255. En caso contrario el bit C se pone a cero.

El bit de acarreo auxiliar (AC) se pone a uno si hay llevada desde el bit 3. Es decir si el nibble bajo del resultado pasa de 15. En caso contrario el bit AC se pone a cero.

El bit de rebasamiento (OV) se pone a uno si hay llevada desde el bit 6, o desde el bit 7, pero no de ambos. En caso contrario se pone a cero. En otras palabras, si al sumar dos números enteros, el flag OV toma valor 1, ello significa que el resultado se encuentra fuera del rango de los enteros de 8 bits, que va desde -128 hasta +127.

Véase también: ADDC, SUBB, DA, INC, DEC

Contenido>Indice>Intro Instrucciones

Page 5: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: ADDC

Función:Suma el operando implicado, el bit de acarreo y el ACC y deja el resultado en ACC

Sintaxis: ADDC A,operando

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

ADDC A,Rn 0 0 1 1 1 r r r - 1 1 C-AC-OV

ADDC A,direcc 0x35 direcc 2 1 C-AC-OV

ADDC A,@Ri 0 0 1 1 0 1 1 i - 1 1 C-AC-OV

ADDC A,#dato 0x34 dato 2 1 C-AC-OV

Operación: ADDC A,operando

(A)<= (A) + (C) + operando

Descripción: ADDC suma el valor del operando, el bit de acarreo C, y el valor del Acumulador, y deja el resultado en el Acumulador. El valor del operando no resulta afectado.

El bit de acarreo (C) se pone a uno si hay llevada desde el bit 7. Es decir, si el resultado de la suma pasa de 255. En caso contrario el bit C se pone a cero.

El bit de acarreo auxiliar (AC) se pone a uno si hay llevada desde el bit 3. Es decir si el nibble bajo del resultado pasa de 15. En caso contrario el bit AC se pone a cero.

El bit de rebasamiento (OV) se pone a uno si hay llevada desde el bit 6, o desde el bit 7, pero no de ambos. En caso contrario se pone a cero. En otras palabras, si al sumar dos números enteros, el flag OV toma valor 1, ello significa que el resultado se encuentra fuera del rango de los enteros de 8 bits, que va desde -128 hasta +127.

Véase también: ADD, SUBB, DA, INC, DEC

Contenido>Indice>Intro Instrucciones

Page 6: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: AJMP

Función: Salto absoluto dentro de un bloque de 2K

Sintaxis: AJMP dir_11

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

AJMP dir_11 a10 a9 a8 0 0 0 0 1 dir 7-0 2 2 -

Operación: AJMP

(PC)<= (PC) + 2 (PC10-0)<= dir_11

Descripción: AJMP realiza una salto a la dirección indicada de la memoria de código. La dirección de salto, o nuevo valor para el PC (Program Counter) se obtiene uniendo a los 5 bits de mayor peso del PC ( incrementado dos veces), los bits 7-5 del código de operación y el segundo byte de la instrucción.

Como la instrucción AJMP sólo afecta a los 11 bits de menor peso del PC, la llamada siempre se produce a una dirección de memoria de código situada dentro del bloque de 2K al que pertenece el primer byte de la instrucción que sigue al AJMP.

Véase también: LJMP, SJMP, JMP

Contenido>Indice>Intro Instrucciones

Page 7: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: ANL

Función:Realiza la AND bit a bit entre los dos operandos. Deja el resultado en operando1

Sintaxis: ANL operando1,operando2

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

ANL A,Rn 0 1 0 1 1 r r r - - 1 1 -

ANL A,direcc 0x55 direcc - 2 1 -

ANL A,@Ri 0 1 0 1 0 1 1 i - - 1 1 -

ANL A,#dato 0x54 dato - 2 1 -

ANL direcc,A 0x52 direcc - 2 1 -

ANL direcc,#dato 0x53 direcc dato 3 2 -

Operación: ANL operando1,operando2

(operando1)<= (operando1) AND (operando2)

Descripción: ANL realiza la operación "AND" bit a bit, entre operando1 y operando2, dejando el resultado en operando1. El valor del operando2 no resulta afectado.

Nota: Cuando se utiliza esta instrucción para modificar un puerto de salida, el valor inicial del dato del puerto se lee del latch de salida, no de las patillas del puerto.

Véase también: ORL, XRL

Contenido>Indice>Intro Instrucciones

Page 8: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: ANL C

Función: AND lógica para variables de tipo bit

Sintaxis: ANL C,bit o ANL C,/bit

Instrucción Código de Operación Byte 2º Bytes Ciclos Flags

ANL C,bit 0x82 bit 2 2 C

ANL C,/bit 0xB0 bit 2 2 C

Operación: ANL C,bit

(C)<= (C) AND (bit)

Descripción: ANL realiza la operación "AND", entre el bit C y operando2, dejando el resultado en C. El valor del operando2 no resulta afectado. Si el bit va precedido por un slash "/", la operación AND se realiza entre el bit de acarreo y el complemento del bit, sin embargo el valor del bit no se ve afectado.

Véase también: ORL C

Contenido>Indice>Intro Instrucciones

Page 9: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: CJNE

Función: Compara y salta si los dos operandos no son iguales

Sintaxis: CJNE operando1,operando2,offset

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

CJNE A,direcc,offset 0xB5 direcc offset 3 2 C

CJNE A,#dato,offset 0xB4 dato offset 3 2 C

CJNE Rn,#dato,offset 1 0 1 1 1 r r r dato offset 3 2 C

CJNE @Ri,#dato,offset 1 0 1 1 0 1 1 i dato offset 3 2 C

Operación: CJNE operando1,operando2,offset

(PC)<= (PC) + 3 IF operando1 < > operando2 THEN (PC)<= (PC) + offset IF operando1 < operando2 THEN (C)<= 1 ELSE (C)<= 0

Descripción: CJNE compara la magnitud de operando1 y operando2 y salta si sus valores no son iguales. Si ambos operandos son iguales, el programa continúa con la siguiente instrucción a CJNE. La dirección a donde saltar se obtiene sumando el offset (tercer byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, sobre la dirección de comienzo de la siguiente instrucción.

La instrucción no modifica ninguno de los dos operandos.

El flag de acarreo (C) se pone a uno si el valor del primer operando es menor que el segundo operando. En caso contrario el bit C se pone a 0.

Véase también: DJNZ

Page 11: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: CLR

Función: Pone a cero el bit implicado

Sintaxis: CLR bit

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

CLR C 0xC3 - 1 1 C

CLR bit 0xC2 bit 2 1 -

Operación: CLR bit

bit <= 0

Descripción: CLR pone a cero el bit indicado. CLR puede operar con el bit C o con cualquier bit direccionable de forma directa.

Véase también: SETB, CPL bit

Contenido>Indice>Intro Instrucciones

Page 12: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: CPL

Función: Complementa los ocho bits del acumulador

Sintaxis: CPL A

Instrucción Código de Operación Bytes Ciclos Flags

CPL A 0xF4 1 1 -

Operación: CPL A

(A) <= NOT (A)

Descripción: CPL A complementa el contenido del acumulador. Cada bit del acumulador que esté a "1" se pondrá a "0" y al revés.

Véase también: CLR A

Contenido>Indice>Intro Instrucciones

Page 13: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: CPL

Función: Complementa el bit implicado

Sintaxis: CPL bit

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

CPL C 0xB3 - 1 1 C

CPL bit 0xB2 bit 2 1 -

Operación: CPL bit

bit <= NOT bit

Descripción: CPL complementa el bit indicado. CPL puede operar con el bit C o con cualquier bit direccionable de forma directa.

Véase también: SETB, CLR bit

Contenido>Indice>Intro Instrucciones

Page 14: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: DA

Función: Ajuste decimal del acumulador para la suma

Sintaxis: DA A

Instrucción Código de Operación Bytes Ciclos Flags

DA A 0xD4 1 1 C

Operación: DA A

IF [[(A3-0) > 9] OR [(AC) = 1]] THEN(A3-0)<= (A3-0) + 6 AND IF [[(A7-4) > 9] OR [(C) = 1]]

THEN (A7-4)<= (A7-4) + 6

Descripción: Después de una suma de dos números BCD (Binary Coded Decimal), la instrucción DA A ajusta el contenido del acumulador a un número BCD.

Su funcionamiento se realiza en dos fases:

En la primera, si el bit AC vale 1, o si el nibble bajo del acumulador es mayor que 9, se añade 06H al acumulador. Esta operación puede poner a 1 el C, pero no puede ponerlo a 0.

Si después de la primera fase el bit C vale 1, o si el nibble alto del acumulador es mayor que 9, se añade 60H al acumulador.

El bit de acarreo (C) se pone a 1 si el contenido final del acumulador es mayor que 99H. En caso contrario se pone a 0.

La instrucción DA A debe utilizarse siempre después de una suma (ADD o ADDC), y no puede emplearse después de una resta (SUBB).

Véase también: ADD, ADDC

Page 15: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: DEC

Función: Decrementa en una unidad el operando implicado

Sintaxis: DEC operando

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

DEC A 0x14 - 1 1 -

DEC Rn 0 0 0 1 1 r r r - 1 1 -

DEC direcc 0x15 direcc 2 1 -

DEC @Ri 0 0 0 1 0 1 1 i - 1 1 -

Operación: DEC operando

operando<= operando - 1

Descripción: DEC decrementa en una unidad el valor del operando. Si el valor a decrementar es 0, entonces el resultado será 0xFF, aunque el bit C no resulta afectado por ello.

Nota: Cuando se utiliza esta instrucción para modificar un puerto de salida, el valor inicial del dato del puerto se lee del latch de salida, no de las patillas del puerto.

Véase también: INC, SUBB

Contenido>Indice>Intro Instrucciones

Page 16: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: DIV

Función: Divide el contenido del acumulador entre el contenido del registro B

Sintaxis: DIV AB

Instrucción Código de Operación Bytes Ciclos Flags

DIV AB 0x84 1 4 C, OV

Operación: DIV AB

(A) <= Cociente de la división entera (A)/(B) (B) <= Resto de la división entera (A)/(B)

Descripción: Divide (división entera) el contenido del acumulador entre el contenido del registro B. El cociente se deja en el acumulador y el resto se deja en el registro B. Si inicialmente el registro B tiene valor 0, tras la división el contenido del acumulador y del registro B es indeterminado, y se activa el flag OV.

El flag Carry (C) siempre se pone a 0.

El flag de Overflow (OV) se pone a 1 si se intenta la división por 0. En caso contrario se pone a 0.

Véase también: MUL AB

Contenido>Indice>Intro Instrucciones

Page 17: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: DJNZ

Función: Decrementa y salta si el operando no es 0

Sintaxis: DJNZ operando,offset

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

DJNZ Rn,offset 1 1 0 1 1 r r r offset - 2 2 -

DJNZ direcc,offset 0xD5 direcc offset 3 2 -

Operación: DJNZ operando,offset

(PC)<= (PC) + 2 (ó 3) operando <= operando -1 IF operando < > 0 THEN (PC)<= (PC) + offset

Descripción: DJNZ decrementa el operando y si el nuevo valor es distinto de cero, se produce el salto. Si el valor del operando es cero, el programa continúa con la siguiente instrucción a DJNZ. La dirección a donde saltar se obtiene sumando el offset (último byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, sobre la dirección de comienzo de la siguiente instrucción.

Si el valor inicial del operando es cero, al ser decrementado pasa a valer 0xFF, sin que el bit C se vea afectado por ello. Se puede utilizar para repetir un conjunto de instrucciones desde 1 hasta 256 veces.

Véase también: CJNE

Contenido>Indice>Intro Instrucciones

Page 18: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: INC

Función: Incrementa en una unidad el operando implicado

Sintaxis: INC operando

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

INC A 0x04 - 1 1 -

INC Rn 0 0 0 0 1 r r r - 1 1 -

INC direcc 0x05 direcc 2 1 -

INC @Ri 0 0 0 0 0 1 1 i - 1 1 -

INC DPTR 0xA3 - 1 2 -

Operación: INC operando

operando<= operando + 1

Descripción: INC incrementa en una unidad el valor del operando. Si el valor a incrementar es 0FFH, entonces el resultado será 0, aunque el bit C no resulta afectado por ello.

Nota: Cuando se utiliza esta instrucción para modificar un puerto de salida, el valor inicial del dato del puerto se lee del latch de salida, no de las patillas del puerto.

En el caso de INC DPTR se incrementa el registro de 16 bits DPTR. Si la parte baja del registro (DPL), pasa de 0xFF a 0, la parte alta del registro (DPH) se incrementa en una unidad. Si el valor inicial del DPTR es 0xFFFF, entonces el resultado será 0, aunque el bit C no resulta afectado por ello.

Véase también: DEC, ADD, ADDC

Contenido>Indice>Intro Instrucciones

Page 19: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: JB

Función: Salta si el bit implicado vale 1

Sintaxis: JB bit,offset

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

JB bit,offset 0x20 bit offset 3 2 -

Operación: JB bit,offset

(PC)<= (PC) + 3 IF (bit) = 1 THEN (PC)<= (PC) + offset

Descripción: Si el bit implicado es igual a 1 se salta a la dirección indicada. En caso contrario se procesa la siguiente instrucción. La dirección a donde saltar se obtiene sumando el offset (último byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, medidos desde la dirección de comienzo de la siguiente instrucción.

Véase también: JNB, JBC

Contenido>Indice>Intro Instrucciones

Page 20: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: JBC

Función: Salta si el bit implicado vale 1, y borrar el bit

Sintaxis: JBC bit,offset

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

JBC bit,offset 0x10 bit offset 3 2 -

Operación: JBC bit,offset

(PC)<= (PC) + 3IF (bit) = 1 THEN (bit)<= 0 (PC)<= (PC) + offset

Descripción: Si el bit implicado es igual a 1, se pone a 0 y se salta a la dirección indicada. En caso contrario se procesa la siguiente instrucción. La dirección a donde saltar se obtiene sumando el offset (último byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, medidos desde la dirección de comienzo de la siguiente instrucción.

Véase también: JNB, JB

Contenido>Indice>Intro Instrucciones

Page 21: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: JC

Función: Salta si el bit C vale 1

Sintaxis: JC offset

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

JC offset 0x40 offset 2 2 -

Operación: JC offset

(PC)<= (PC) + 2 IF (C) = 1 THEN (PC)<= (PC) + offset

Descripción: Si el flag C vale 1 se salta a la dirección indicada. En caso contrario se procesa la siguiente instrucción. La dirección a donde saltar se obtiene sumando el offset (último byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, medidos desde la dirección de comienzo de la siguiente instrucción.

Véase también: JNC

Contenido>Indice>Intro Instrucciones

Page 22: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: JMP

Función: Salto indirecto

Sintaxis: JMP @A+DPTR

Instrucción Código de Operación Bytes Ciclos Flags

JMP @A+DPTR 0x73 1 2 -

Operación: JMP @A+DPTR

(PC)<= (A) + (DPTR)

Descripción: JMP suma el contenido del ACC (8 bits) con el contenido del DPTR (16 bits), y carga el PC con el contenido de la suma, con lo cual el control del programa se transfiere a la dirección resultante de la suma. La instrucción no modifica ni el contenido de ACC, ni el contenido del DPTR.

Véase también: LJMP, AJMP, SJMP

Contenido>Indice>Intro Instrucciones

Page 23: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: JNB

Función: Salta si el bit implicado no vale 1

Sintaxis: JNB bit,offset

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

JNB bit,offset 0x30 bit offset 3 2 -

Operación: JNB bit,offset

(PC)<= (PC) + 3 IF (bit) = 0 THEN (PC)<= (PC) + offset

Descripción: Si el bit implicado es igual a 0 se salta a la dirección indicada. En caso contrario se procesa la siguiente instrucción. La dirección a donde saltar se obtiene sumando el offset (último byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, medidos desde la dirección de comienzo de la siguiente instrucción.

Véase también: JB, JBC

Contenido>Indice>Intro Instrucciones

Page 24: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: JNC

Función: Salta si el bit C vale 0

Sintaxis: JNC offset

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

JNC offset 0x50 offset 2 2 -

Operación: JNC offset

(PC)<= (PC) + 2 IF (C) = 0 THEN (PC)<= (PC) + offset

Descripción: Si el flag C vale 0 se salta a la dirección indicada. En caso contrario se procesa la siguiente instrucción. La dirección a donde saltar se obtiene sumando el offset (último byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, medidos desde la dirección de comienzo de la siguiente instrucción.

Véase también: JC

Contenido>Indice>Intro Instrucciones

Page 25: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: JNZ

Función: Salta si el Acumulador no es 0

Sintaxis: JNZ offset

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

JNZ offset 0x70 offset 2 2 -

Operación: JNZ offset

(PC)<= (PC) + 2 IF (A) <> 0 THEN (PC)<= (PC) + offset

Descripción: Si el acumulador es distinto de 0 se salta a la dirección indicada. En caso contrario se procesa la siguiente instrucción. La dirección a donde saltar se obtiene sumando el offset (último byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, medidos desde la dirección de comienzo de la siguiente instrucción.

Véase también: JZ

Contenido>Indice>Intro Instrucciones

Page 26: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: JZ

Función: Salta si el Acumulador es 0

Sintaxis: JZ offset

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

JZ offset 0x60 offset 2 2 -

Operación: JZ offset

(PC)<= (PC) + 2 IF (A) = 0 THEN (PC)<= (PC) + offset

Descripción: Si el contenido del acumulador es igual a 0 se salta a la dirección indicada. En caso contrario se procesa la siguiente instrucción. La dirección a donde saltar se obtiene sumando el offset (último byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, medidos desde la dirección de comienzo de la siguiente instrucción.

Véase también: JNZ

Contenido>Indice>Intro Instrucciones

Page 27: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: LCALL

Función: Llamada larga

Sintaxis: LCALL dir_16

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

LCALL dir_16 0x12 dir 15-8 dir 7-0 3 2 -

Operación: LCALL

(PC)<= (PC) + 3 (SP)<= (SP) + 1 ((SP))<= (PC.7-0) (SP)<= (SP) + 1 ((SP))<= (PC.15-8) (PC)<= addr15-0

Descripción: LCALL realiza una llamada incondicional a la subrutina situada en la dirección indicada. LCALL incrementa el PC (Program Counter) tres veces para obtener la dirección de la siguiente instrucción, luego guarda dicha dirección en la pila (el byte de menor peso en primer lugar). En consecuencia el apuntador de pila (SP o Stack Pointer) incrementa su valor en 2. Posteriormente el control del programa se transfiere a la dirección indicada en la instrucción.

Véase también: ACALL, RET

Contenido>Indice>Intro Instrucciones

Page 28: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: LJMP

Función: Salto incondicional

Sintaxis: LJMP dir_16

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

LJMP dir_16 0x02 dir 15-8 dir 7-0 3 2 -

Operación: LJMP

(PC)<= dir_16

Descripción: LJMP realiza una salto incondicional a la dirección de 16 bits indicada en los dos últimos bytes de la instrucción. El destino puede ser cualquier posición de los 64 Kbytes de memoria de código.

Véase también: AJMP, SJMP, JMP

Contenido>Indice>Intro Instrucciones

Page 29: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: MOV

Función: Copiar operando2 sobre operando1.

Sintaxis: MOV operando1,operando2

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

MOV A,Rn 1 1 1 0 1 r r r - - 1 1 -

*MOV A,direcc 0xE5 direcc - 2 1 -

MOV A,@Ri 1 1 1 0 0 1 1 i - - 1 1 -

MOV A,#dato 0x74 dato - 2 1 -

MOV Rn,A 1 1 1 1 1 r r r - - 1 1 -

MOV Rn,direcc 1 0 1 0 1 r r r direcc - 2 2 -

MOV Rn,#dato 0 1 1 1 1 r r r dato - 2 1 -

MOV direcc,A 0xF5 direcc - 2 1 -

MOV direcc,Rn 1 0 0 0 1 r r r direcc - 2 2 -

*MOV direc1,direc2 0x85 direc2 direc1 3 2 -

MOV direcc,@Ri 1 0 0 0 0 1 1 i direcc - 2 2 -

MOV direcc,#dato 0x75 direcc dato 3 2 -

MOV @Ri,A 1 1 1 1 0 1 1 i - - 1 1 -

MOV @Ri,direcc 1 0 1 0 0 1 1 i direcc - 2 2 -

MOV @Ri,#dato 0 1 1 1 0 1 1 i dato - 2 1 -

MOV DPTR,#dato16 0x90 dato 15-8 dato 7-0 3 2 -

Operación: MOV operando1,operando2

(operando1)<= (operando2)

Descripción: MOV copia el valor de operando2 en operando1. El valor de operando2 no resulta afectado. Ambos operandos pertenecen a la RAM interna. Ningún flag resulta afectado, salvo que el movimiento se realice hacia el registro PSW que contiene los flags.

Page 30: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Nota_1: MOV A,ACC no es una instrucción válida. Experimentalmente se ha comprobado que se trata de una instrucción de dos bytes que se ejecuta en un solo ciclo máquina y que parece dejar siempre el contenido del acumulador a 0xFF.

Nota_2: En el caso de "MOV direc1,direc2", los operandos se almacenan en orden inverso. Así la instrucción formada por los bytes 85H, 20H, 50H indica "Mover el contenido de la dirección 20H de RAM Interna a la dirección 50H de RAM Interna.

Véase también: MOVC, MOVX, XCH, XCHD, PUSH, POP

Contenido>Indice>Intro Instrucciones

Page 31: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: MOV

Función: Movimiento de bit

Sintaxis: MOV bit1,bit2

Instrucción Código de Operación Byte 2º Bytes Ciclos Flags

MOV C,bit 0xA2 bit 2 1 C

MOV bit,C 0x92 bit 2 2 -

Operación: MOV bit1,bit2

(bit1)<= (bit2)

Descripción: Mueve (copia) el valor del bit2 en el bit1, el contenido de bit2 no resulta afectado. Uno de los operandos es siempre el bit C.

Véase también: ORL C

Contenido>Indice>Intro Instrucciones

Page 32: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: MOVC

Función: Mover un byte de la memoria de código al acumulador

Sintaxis: MOVC A,@A+Reg16

Instrucción Código de Operación Bytes Ciclos Flags

MOVC A,@A+DPTR 0x93 1 2 -

MOVC A,@A+PC 0x83 1 2 -

Operación: MOVC A,@A+Reg16

IF Reg16 = PC THEN (PC)<= (PC) + 1(A)<= ((A) + (Reg16))

Descripción: MOVC mueve (copia) un byte de la memoria de código, al acumulador. La dirección de la memoria de código implicada se calcula sumando el valor del acumulador con el DPTR o con el PC (Program Counter). En el caso del PC, antes de sumarlo con el contenido del acumulador, el PC se incrementa en 1.

Véase también: MOV, MOVX

Contenido>Indice>Intro Instrucciones

Page 33: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: MOVX

Función: Mover un byte entre el acumulador y la memoria externa de datos XRAM

Sintaxis: MOVX operando1,operando2

Instrucción Código de Operación Bytes Ciclos Flags

MOVX A,@Ri 1 1 1 0 0 0 1 i 1 2 -

MOVX A,@DPTR 0xE0 1 2 -

MOVX @Ri,A 1 1 1 1 0 0 1 i 1 2 -

MOVX @DPTR,A 0xF0 1 2 -

Operación: MOVX operando1,operando2

(operando1)<= (operando2)

Descripción: MOVC copia un byte desde operando2, hacia operando1. Uno de los operandos es el acumulador, y el otro es una posición de la memoria eXterna de datos (XRAM). La dirección de la posición de XRAM implicada en el movimiento es la contenida en los registros DPH y DPL (caso @DPTR), o la contenida en los registros P2 y Ri (caso @Ri). La instrucción no modifica al operando2.

Véase también: MOV, MOVC

Contenido>Indice>Intro Instrucciones

Page 34: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: MUL

Función: Multiplica el contenido del acumulador por el contenido del registro B

Sintaxis: MUL AB

Instrucción Código de Operación Bytes Ciclos Flags

MUL AB 0xA4 1 4 C, OV

Operación: MUL AB

(A) <= Byte bajo del producto (A) x (B) (B) <= Byte alto del producto (A) x (B)

Descripción: MUL AB multiplica el contenido del acumulador por el contenido del registro B. El byte bajo del resultado de 16 bits se deja en el acumulador, y el byte alto en el registro B. Si el producto es mayor que 255 (0xFF) el flag de Overflow (OV) se pone a 1. En caso contrario OV se pone a 0.

El flag Carry (C) siempre se pone a 0.

Véase también: DIV AB

Contenido>Indice>Intro Instrucciones

Page 35: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: NOP

Función: No OPeración

Sintaxis: NOP

Instrucción Código de Operación Bytes Ciclos Flags

NOP 0x00 1 1 -

Operación: NOP

(PC)<= (PC) + 1

Descripción: Como su nombre indica, no realiza ninguna operación. Generalmente se utiliza para obtener demoras cortas, ya que en su ejecución se invierte un ciclo máquina.

Contenido>Indice>Intro Instrucciones

Page 36: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: ORL

Función:Realiza la OR bit a bit entre los dos operandos. Deja el resultado en operando1

Sintaxis: ORL operando1,operando2

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

ORL A,Rn 0 1 0 0 1 r r r - - 1 1 -

ORL A,direcc 0x45 direcc - 2 1 -

ORL A,@Ri 0 1 0 0 0 1 1 i - - 1 1 -

ORL A,#dato 0x44 dato - 2 1 -

ORL direcc,A 0x42 direcc - 2 1 -

ORL direcc,#dato 0x43 direcc dato 3 2 -

Operación: ORL operando1,operando2

(operando1)<= (operando1) OR (operando2)

Descripción: ORL realiza la operación "OR" bit a bit, entre operando1 y operando2, dejando el resultado en operando1. El valor del operando2 no resulta afectado.

Nota: Cuando se utiliza esta instrucción para modificar un puerto de salida, el valor inicial del dato del puerto se lee del latch de salida, no de las patillas del puerto.

Véase también: ANL, XRL

Contenido>Indice>Intro Instrucciones

Page 37: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: ORL C

Función: Realiza la OR entre el bit de acarreo C y otro bit. Deja el resultado en C

Sintaxis: ORL C,bit u ORL C,/bit

Instrucción Código de Operación Byte 2º Bytes Ciclos Flags

ORL C,bit 0x72 bit 2 2 C

ORL C,/bit 0xA0 bit 2 2 C

Operación: ORL C,bit

(C)<= (C) OR (bit)

Descripción: ORL realiza la operación "OR", entre el bit C y operando2, dejando el resultado en C. El valor del operando2 no resulta afectado. Si el bit va precedido por un slash "/", la operación OR se realiza entre el bit de acarreo y el complemento del bit, sin embargo el valor del bit no se ve afectado.

Véase también: ANL C, MOV bit

Contenido>Indice>Intro Instrucciones

Page 38: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: POP

Función: Desapilar un byte hacia RAM interna

Sintaxis: POP direcc

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

POP direcc 0xD0 direcc 2 2 -

Operación: POP direcc

(direct)<= ((SP)) (SP)<= (SP) - 1

Descripción: POP copia el contenido de la posición de RAM interna direccionado por el SP (Stack Pointer), en la dirección de RAM interna que indica el segundo byte de la instrucción. El valor del SP se decrementa en 1.

Véase también: PUSH

Contenido>Indice>Intro Instrucciones

Page 39: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: PUSH

Función: Apilar un byte de RAM interna

Sintaxis: PUSH direcc

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

PUSH direcc 0xC0 direcc 2 2 -

Operación: PUSH direcc

(SP)<= (SP) + 1 ((SP))<= (direcc)

Descripción: PUSH almacena el valor de una dirección de RAM interna en la pila. En primer lugar incrementa en 1 el valor de SP (Stack Pointer), y después guarda el valor de la dirección de RAM interna implicada, en la posición apuntada por el SP ya incrementado.

Véase también: POP

Contenido>Indice>Intro Instrucciones

Page 40: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: RET

Función: Retorno desde subrutina

Sintaxis: RET

Instrucción Código de Operación Bytes Ciclos Flags

RET 0x22 1 2 -

Operación: RET

(PC15-8)<= ((SP)) (SP)<= (SP) - 1 (PC7-0)<= ((SP)) (SP)<= (SP) - 1

Descripción: RET se utiliza para retornar desde una subrutina llamada previamente con LCALL o ACALL. La ejecución del programa continúa desde la dirección formada al extraer 2 bytes de la pila. En primer lugar de la pila se saca el byte más significativo.

Véase también: LCALL, ACALL, RETI

Contenido>Indice>Intro Instrucciones

Page 41: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: RETI

Función: Retorno desde interrupción

Sintaxis: RETI

Instrucción Código de Operación Bytes Ciclos Flags

RETI 0x32 1 2 -

Operación: RETI

(PC15-8)<= ((SP)) (SP)<= (SP) - 1 (PC7-0)<= ((SP)) (SP)<= (SP) - 1

Descripción: RETI se utiliza para retornar desde una rutina de atención a una interrupción. La ejecución del programa continúa desde la dirección formada al extraer 2 bytes de la pila. En primer lugar de la pila se saca el byte más significativo. Antes de que el programa salte a la dirección extraída de la pila, RETI repone el sistema de interrupciones para que sean aceptadas las interrupciones con menor o igual prioridad a la que se acaba de atender.

Véase también: RET

Contenido>Indice>Intro Instrucciones

Page 43: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: RLC

Función: Rota el acumulador hacia la izquierda a través del bit C

Sintaxis: RLC A

Instrucción Código de Operación Bytes Ciclos Flags

RLC A 0x33 1 1 C

Operación: RLC A

(An + 1)<= (An) Para n = 0-6 (A0)<= (C) (C)<= (A7)

Descripción: RLC A rota los ocho bits del acumulador y el flag de acarreo (C) un lugar hacia la izquierda. El bit 7 del acumulador se lleva al bit C, y el valor inicial de C se lleva al bit 0.

Véase también: RL, RRC, RR, SWAP

Contenido>Indice>Intro Instrucciones

Page 45: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: RRC

Función: Rota el acumulador hacia la derecha a través del bit C

Sintaxis: RRC A

Instrucción Código de Operación Bytes Ciclos Flags

RRC A 0x13 1 1 C

Operación: RRC A

(An )<= (An + 1) Para n = 0-6 (A7)<= (C) (C)<= (A0)

Descripción: RRC A rota los ocho bits del acumulador y el flag de acarreo (C) un lugar hacia la derecha. El bit 0 del acumulador se lleva al bit C, y el valor inicial de C se lleva al bit 7.

Véase también: RL, RLC, RR, SWAP

Contenido>Indice>Intro Instrucciones

Page 46: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: SETB

Función: Pone a uno el bit implicado

Sintaxis: SETB bit

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

SETB C 0xD3 - 1 1 C

SETB bit 0xD2 bit 2 1 -

Operación: SETB bit

bit <= 1

Descripción: SETB pone a uno el bit indicado. Puede operar con el bit C o con cualquier bit direccionable de forma directa.

Véase también: CPL bit, CLR bit

Contenido>Indice>Intro Instrucciones

Page 47: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: SJMP

Función: Salto corto

Sintaxis: SJMP offset

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

SJMP offset 0x80 offset 2 2 -

Operación: SJMP offset

(PC)<= (PC) + 2 (PC)<= (PC) + offset

Descripción: El control del programa salta incondicionalmente a la dirección indicada. La dirección a donde saltar se obtiene sumando el offset (último byte de la instrucción), al PC (Program Counter) después de que éste se haya incrementado hasta el comienzo de la siguiente instrucción. El offset representa una cantidad entera con signo, y permite saltos de hasta 127 posiciones hacia adelante, y hasta 128 posiciones hacia atrás, medidos desde la dirección de comienzo de la siguiente instrucción.

Véase también: LJMP, AJMP, JMP

Contenido>Indice>Intro Instrucciones

Page 48: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: SUBB

Función: Resta con llevada.

Sintaxis: SUBB A,operando

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

SUBB A,Rn 1 0 0 1 1 r r r - 1 1 C-AC-OV

SUBB A,direcc 0x95 direcc 2 1 C-AC-OV

SUBB A,@Ri 1 0 0 1 0 1 1 i - 1 1 C-AC-OV

SUBB A,#dato 0x94 dato 2 1 C-AC-OV

Operación: SUBB A,operando

(A)<= (A) - (C) - operando

Descripción: SUBB resta al acumulador el valor del operando y el bit de acarreo C. Deja el resultado en el Acumulador. El valor del operando no resulta afectado.

El bit de acarreo (C) se pone a uno si hay llevada desde el bit 7. Es decir, si el valor contenido en el acumulador es menor que la suma del operando con el bit de acarreo. En caso contrario el bit C se pone a cero.

El bit de acarreo auxiliar (AC) se pone a uno si hay llevada desde el bit 3.

El bit de rebasamiento (OV) se pone a uno si hay llevada desde el bit 6, o desde el bit 7, pero no de ambos. En caso contrario se pone a cero. En otras palabras, si al sumar dos números enteros, el flag OV toma valor 1, ello significa que el resultado se encuentra fuera del rango de los enteros de 8 bits, que va desde -128 hasta +127.

Véase también: ADD, ADDC, DA, INC, DEC

Contenido>Indice>Intro Instrucciones

Page 49: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: SWAP

Función: Intercambia los dos nibbles del acumulador

Sintaxis: SWAP A

Instrucción Código de Operación Bytes Ciclos Flags

SWAP A 0xC4 1 1 -

Operación: SWAP A

(A 3-0) <=> (A 7-4)

Descripción: SWAP A intercambia los dos nibbles del acumulador (bits 3-0 y bits 7-4). El mismo resultado puede conseguirse mediante cuatro intrucciones de rotación.

Véase también: RL, RLC, RR, RRC

Contenido>Indice>Intro Instrucciones

Page 50: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: ??

Función: Indefinida

Sintaxis: ??? Operando

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

0xA5 Operando 0xA5 Operando 2 1 -

Operación: ?? Byte

Descripción: El 8051 soporta 255 códigos de operación. El código de operación 0xA5 es el único que no corresponde a ninguna función documentada. Como no está documentada ni definida no se recomienda su uso. Sin embargo según nuestra experiencia con un µC PCF80C552 podemos afirmar que se trata de una instrucción de dos bytes que se ejecuta en un solo ciclo máquina. Aparte de la demora introducida no se ha observado ninguna otra acción.

Véase también: NOP

Contenido>Indice>Intro Instrucciones

Page 51: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: XCH

Función: Intercambiar el contenido del acumulador con otro byte

Sintaxis: XCH A,operando

Instrucción Código de Operación 2º Byte Bytes Ciclos Flags

XCH A,Rn 1 1 0 0 1 r r r - 1 1 -

XCH A,direcc 0xC5 direcc 2 1 -

XCH A,@Ri 1 1 0 0 0 1 1 i - 1 1 -

Operación: XCH A,operando

(A) <=> (operando)

Descripción: XCH intercambia los contenidos del Acumulador y del operando implicado.

Véase también: MOV

Contenido>Indice>Intro Instrucciones

Page 52: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: XCHD

Función: Intercambiar dígito

Sintaxis: XCHD A,@Ri

Instrucción Código de Operación Bytes Ciclos Flags

XCHD A,@Ri 1 1 0 1 0 1 1 i 1 1 -

Operación: XCHD A,@Ri

(A 3-0) <=> ((Ri 3-0))

Descripción: XCHD A,@Ri intercambia el nibble bajo (bits 3-0) del acumulador con el nibble bajo de la posición de RAM interna cuya dirección está contenida en el registro Ri. Los nibbles altos de ambos operandos no se ven afectados.

Véase también: DA

Contenido>Indice>Intro Instrucciones

Page 53: Conjunto de Instrucciones en lenguaje ensambladornunez/clases-sed-mai-8051/juego instruccciones... · Conjunto de Instrucciones en lenguaje ensamblador Lista Alfabética de Instrucciones

Contenido>Indice>Intro Instrucciones

Instrucción: XRL

Función: O-exclusiva bit a bit entre dos operandos.

Sintaxis: XRL operando1,operando2

Instrucción Código de Operación Byte 2º Byte 3º Bytes Ciclos Flags

XRL A,Rn 0 1 1 0 1 r r r - - 1 1 -

XRL A,direcc 0x65 direcc - 2 1 -

XRL A,@Ri 0 1 1 0 0 1 1 i - - 1 1 -

XRL A,#dato 0x64 dato - 2 1 -

XRL direcc,A 0x62 direcc - 2 1 -

XRL direcc,#dato 0x63 direcc dato 3 2 -

Operación: XRL operando1,operando2

(operando1)<= (operando1) XOR (operando2)

Descripción: XRL realiza la operación "O-exclusiva" bit a bit, entre operando1 y operando2, dejando el resultado en operando1. El valor del operando2 no resulta afectado.

Nota: Cuando se utiliza esta instrucción para modificar un puerto de salida, el valor inicial del dato del puerto se lee del latch de salida, no de las patillas del puerto.

Véase también: ANL, ORL