SlideShare uma empresa Scribd logo
1 de 25
Instrucción:ACALLFunción:Llamada absoluta dentro de un bloque de 2KSintaxis:ACALL dir_11<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsACALL dir_11a10a9a810000dir 7-022-<br />Operación: ACALL<br />(PC) <= (PC) + 2 (SP) <= (SP) + 1 ((SP)) <= (PC7-0) (SP)<= (SP) + 1 ((SP)) <= (PC15-8) (PC10-0) <= dir_11<br />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.<br />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.<br />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.<br />Instrucción:ADDFunción:Suma el operando implicado al ACC y deja el resultado en ACCSintaxis:ADD A,operandoInstrucciónCódigo de Operación2º ByteBytesCiclosFlagsADD A,Rn00101rrr-11C-AC-OVADD A,direcc0x25direcc21C-AC-OVADD A,@Ri0010011i-11C-AC-OVADD A,#dato0x24dato21C-AC-OVOperación: ADD A,operando(A)<= (A) + operandoDescripció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.<br />Instrucción:ADDCFunción:Suma el operando implicado, el bit de acarreo y el ACC y deja el resultado en ACCSintaxis:ADDC A,operando<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsADDC A,Rn00111rrr-11C-AC-OVADDC A,direcc0x35direcc21C-AC-OVADDC A,@Ri0011011i-11C-AC-OVADDC A,#dato0x34dato21C-AC-OV<br />Operación: ADDC A,operando<br />(A)<= (A) + (C) + operando<br />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.<br />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.<br />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.<br />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.<br />Instrucción:AJMPFunción:Salto absoluto dentro de un bloque de 2KSintaxis:AJMP dir_11<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsAJMP dir_11a10a9a800001dir 7-022-<br />Operación: AJMP<br />(PC)<= (PC) + 2 (PC10-0)<= dir_11<br />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.<br />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.<br />Instrucción:ANLFunción:Realiza la AND bit a bit entre los dos operandos. Deja el resultado en operando1Sintaxis:ANL operando1,operando2<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsANL A,Rn01011rrr--11-ANL A,direcc0x55direcc-21-ANL A,@Ri0101011i--11-ANL A,#dato0x54dato-21-ANL direcc,A0x52direcc-21-ANL direcc,#dato0x53direccdato32-<br />Operación: ANL operando1,operando2<br />(operando1)<= (operando1) AND (operando2)<br />Descripción: ANL realiza la operación quot;
ANDquot;
 bit a bit, entre operando1 y operando2, dejando el resultado en operando1. El valor del operando2 no resulta afectado.<br />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.<br />Instrucción:DAFunción:Ajuste decimal del acumulador para la sumaSintaxis:DA A<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsDA A0xD411C<br />Operación: DA A<br />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<br />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.<br />Su funcionamiento se realiza en dos fases:<br />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.<br />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.<br />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.<br />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).<br />Instrucción:JBFunción:Salta si el bit implicado vale 1Sintaxis:JB bit,offsetInstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsJB bit,offset0x20bitoffset32-Operación: JB bit,offset(PC)<= (PC) + 3 IF (bit) = 1 THEN (PC)<= (PC) + offsetDescripció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.<br />Instrucción:INCFunción:Incrementa en una unidad el operando implicadoSintaxis:INC operando<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsINC A0x04-11-INC Rn00001rrr-11-INC direcc0x05direcc21-INC @Ri0000011i-11-INC DPTR0xA3-12-<br />Operación: INC operando<br />operando<=  operando + 1<br />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.<br />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.<br />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.<br /> <br />Instrucción:JCFunción:Salta si el bit C vale 1Sintaxis:JC offset<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsJC offset0x40offset22-<br />Operación: JC offset<br />(PC)<= (PC) + 2 IF (C) = 1 THEN (PC)<= (PC) + offset<br />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.<br />Instrucción:CPLFunción:Complementa el bit implicadoSintaxis:CPL bit<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsCPL C0xB3-11CCPL bit0xB2bit21-<br />Operación: CPL bit<br />bit <=  NOT bit<br />Descripción: CPL complementa el bit indicado. CPL puede operar con el bit C o con cualquier bit direccionable de forma directa.<br />Instrucción:JBCFunción:Salta si el bit implicado vale 1, y borrar el bitSintaxis:JBC bit,offset<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsJBC bit,offset0x10bitoffset32-<br />Operación: JBC bit,offset<br />(PC)<= (PC) + 3IF (bit) = 1 THEN (bit)<= 0 (PC)<= (PC) + offset<br />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.<br />Instrucción:JNCFunción:Salta si el bit C vale 0Sintaxis:JNC offset<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsJNC offset0x50offset22-<br />Operación: JNC offset<br />(PC)<= (PC) + 2 IF (C) = 0 THEN (PC)<= (PC) + offset<br />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.<br />Instrucción:JZFunción:Salta si el Acumulador es 0Sintaxis:JZ offset<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsJZ offset0x60offset22-<br />Operación: JZ offset<br />(PC)<= (PC) + 2 IF (A) = 0 THEN (PC)<= (PC) + offset<br />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.<br />Instrucción:MOVFunción:Copiar operando2 sobre operando1.Sintaxis:MOV operando1,operando2<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsMOV A,Rn11101rrr--11-*MOV A,direcc0xE5direcc-21-MOV A,@Ri1110011i--11-MOV A,#dato0x74dato-21-MOV Rn,A11111rrr--11-MOV Rn,direcc10101rrrdirecc-22-MOV Rn,#dato01111rrrdato-21-MOV direcc,A0xF5direcc-21-MOV direcc,Rn10001rrrdirecc-22-*MOV direc1,direc20x85direc2direc132-MOV direcc,@Ri1000011idirecc-22-MOV direcc,#dato0x75direccdato32-MOV @Ri,A1111011i--11-MOV @Ri,direcc1010011idirecc-22-MOV @Ri,#dato0111011idato-21-MOV DPTR,#dato160x90dato 15-8dato 7-032-<br />Operación: MOV operando1,operando2<br />(operando1)<= (operando2)<br />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.<br />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.<br />Nota_2: En el caso de quot;
MOV direc1,direc2quot;
, los operandos se almacenan en orden inverso. Así la instrucción formada por los bytes 85H, 20H, 50H indica quot;
Mover el contenido de la dirección 20H de RAM Interna a la dirección 50H de RAM Interna.<br />Instrucción:MOVFunción:Movimiento de bitSintaxis:MOV bit1,bit2<br />InstrucciónCódigo de OperaciónByte 2ºBytesCiclosFlagsMOV C,bit0xA2bit21CMOV bit,C0x92bit22-<br />Operación: MOV bit1,bit2<br />(bit1)<= (bit2)<br />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.<br />Instrucción:MOVXFunción:Mover un byte entre el acumulador y la memoria externa de datos XRAMSintaxis:MOVX operando1,operando2<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsMOVX A,@Ri1110001i12-MOVX A,@DPTR0xE012-MOVX @Ri,A1111001i12-MOVX @DPTR,A0xF012-<br />Operación: MOVX operando1,operando2<br />(operando1)<= (operando2)<br />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.<br /> <br />   <br />Instrucción:NOPFunción:No OPeraciónSintaxis:NOP<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsNOP0x0011-<br />Operación: NOP<br />(PC)<= (PC) + 1<br />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.   <br />Instrucción:PUSHFunción:Apilar un byte de RAM internaSintaxis:PUSH direcc<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsPUSH direcc0xC0direcc22-<br />Operación: PUSH direcc<br />(SP)<= (SP) + 1 ((SP))<= (direcc)<br />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.<br />Instrucción:LCALLFunción:Llamada largaSintaxis:LCALL dir_16<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsLCALL dir_160x12dir 15-8dir 7-032-<br />Operación: LCALL<br />(PC)<= (PC) + 3 (SP)<= (SP) + 1 ((SP))<= (PC.7-0) (SP)<= (SP) + 1 ((SP))<= (PC.15-8) (PC)<= addr15-0<br />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.<br /> <br />Instrucción:SETBFunción:Pone a uno el bit implicadoSintaxis:SETB bitInstrucciónCódigo de Operación2º ByteBytesCiclosFlagsSETB C0xD3-11CSETB bit0xD2bit21-Operación: SETB bitbit <=  1Descripción: SETB pone a uno el bit indicado. Puede operar con el bit C o con cualquier bit direccionable de forma directa.<br />Instrucción:DECFunción:Decrementa en una unidad el operando implicadoSintaxis:DEC operando<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsDEC A0x14-11-DEC Rn00011rrr-11-DEC direcc0x15direcc21-DEC @Ri0001011i-11-<br />Operación: DEC operando<br />operando<=  operando - 1<br />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.<br />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.<br />Instrucción:RETFunción:Retorno desde subrutinaSintaxis:RET<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsRET0x2212-<br />Operación: RET<br />(PC15-8)<= ((SP)) (SP)<= (SP) - 1 (PC7-0)<= ((SP)) (SP)<= (SP) - 1<br />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.<br />Instrucción:XRLFunción:O-exclusiva bit a bit entre dos operandos.Sintaxis:XRL operando1,operando2<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsXRL A,Rn01101rrr--11-XRL A,direcc0x65direcc-21-XRL A,@Ri0110011i--11-XRL A,#dato0x64dato-21-XRL direcc,A0x62direcc-21-XRL direcc,#dato0x63direccdato32-<br />Operación: XRL operando1,operando2<br />(operando1)<= (operando1) XOR (operando2)<br />Descripción: XRL realiza la operación quot;
O-exclusivaquot;
 bit a bit, entre operando1 y operando2, dejando el resultado en operando1. El valor del operando2 no resulta afectado.<br />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.<br />Instrucción:CLRFunción:Pone a cero los ocho bits del acumuladorSintaxis:CLR A<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsCLR A0xE411-<br />Operación: CLR A<br />(A) <=  0<br />Descripción: CLR A pone a cero el acumulador. <br />Instrucción:RLFunción:Rota el acumulador hacia la izquierdaSintaxis:RL AInstrucciónCódigo de OperaciónBytesCiclosFlagsRL A0x2311-Operación: RL A(An + 1)<= (An) Para n = 0-6 (A0)<= (A7)Descripción: RL A rota los ocho bits del acumulador un lugar hacia la izquierda. El bit 7 se lleva a la posición del bit 0.<br />
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores
Lenguajes ensambladores

Mais conteúdo relacionado

Destaque

Destaque (6)

Introduccion
IntroduccionIntroduccion
Introduccion
 
Indice
IndiceIndice
Indice
 
Glosario
GlosarioGlosario
Glosario
 
Contenido
ContenidoContenido
Contenido
 
Introducción al Diseño de experimentos
 Introducción al Diseño de experimentos Introducción al Diseño de experimentos
Introducción al Diseño de experimentos
 
Libro analisis y diseño de experimentos de mongomery
Libro analisis y diseño de experimentos de mongomeryLibro analisis y diseño de experimentos de mongomery
Libro analisis y diseño de experimentos de mongomery
 

Semelhante a Lenguajes ensambladores

Micc final feb14_2009
Micc final feb14_2009Micc final feb14_2009
Micc final feb14_2009Jair BG
 
Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009Jair BG
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_solucJair BG
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_solucJair BG
 
microprogramación Mplus.pptx
microprogramación Mplus.pptxmicroprogramación Mplus.pptx
microprogramación Mplus.pptxmaria37579
 
Leccion3 y4 agosto25_2011solucion
Leccion3 y4 agosto25_2011solucionLeccion3 y4 agosto25_2011solucion
Leccion3 y4 agosto25_2011solucionJair BG
 
Micc mej sept16_2010
Micc mej sept16_2010Micc mej sept16_2010
Micc mej sept16_2010Jair BG
 
Micc mej feb18_2010_solucion
Micc mej feb18_2010_solucionMicc mej feb18_2010_solucion
Micc mej feb18_2010_solucionJair BG
 
Micc mej feb18_2010
Micc mej feb18_2010Micc mej feb18_2010
Micc mej feb18_2010Jair BG
 
Micc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_solucMicc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_solucJair BG
 
Microcontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR StudioMicrocontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR StudioSANTIAGO PABLO ALBERTO
 
Electrónica digital: lógica aritmética sumadores
Electrónica digital: lógica aritmética sumadoresElectrónica digital: lógica aritmética sumadores
Electrónica digital: lógica aritmética sumadoresSANTIAGO PABLO ALBERTO
 
Ejercicio pic assembler
Ejercicio pic assemblerEjercicio pic assembler
Ejercicio pic assemblerAlexis Rivera
 
introduccion a la programacion de los microcontroladores motorola-freescale
introduccion a la programacion de los microcontroladores motorola-freescaleintroduccion a la programacion de los microcontroladores motorola-freescale
introduccion a la programacion de los microcontroladores motorola-freescaletecautind
 
INTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALE
INTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALEINTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALE
INTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALEtecautind
 

Semelhante a Lenguajes ensambladores (20)

Micc final feb14_2009
Micc final feb14_2009Micc final feb14_2009
Micc final feb14_2009
 
Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_soluc
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_soluc
 
microprogramación Mplus.pptx
microprogramación Mplus.pptxmicroprogramación Mplus.pptx
microprogramación Mplus.pptx
 
Leccion3 y4 agosto25_2011solucion
Leccion3 y4 agosto25_2011solucionLeccion3 y4 agosto25_2011solucion
Leccion3 y4 agosto25_2011solucion
 
Micc mej sept16_2010
Micc mej sept16_2010Micc mej sept16_2010
Micc mej sept16_2010
 
Micc mej feb18_2010_solucion
Micc mej feb18_2010_solucionMicc mej feb18_2010_solucion
Micc mej feb18_2010_solucion
 
Micc mej feb18_2010
Micc mej feb18_2010Micc mej feb18_2010
Micc mej feb18_2010
 
2da tarea de control
2da tarea de control2da tarea de control
2da tarea de control
 
Micc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_solucMicc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_soluc
 
Registros de la cpu
Registros de la cpuRegistros de la cpu
Registros de la cpu
 
Microcontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR StudioMicrocontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR Studio
 
Electrónica digital: lógica aritmética sumadores
Electrónica digital: lógica aritmética sumadoresElectrónica digital: lógica aritmética sumadores
Electrónica digital: lógica aritmética sumadores
 
Analisis para control pid
Analisis para control pidAnalisis para control pid
Analisis para control pid
 
Ejercicio pic assembler
Ejercicio pic assemblerEjercicio pic assembler
Ejercicio pic assembler
 
Atmel
AtmelAtmel
Atmel
 
Lenguaje máquina
Lenguaje máquinaLenguaje máquina
Lenguaje máquina
 
introduccion a la programacion de los microcontroladores motorola-freescale
introduccion a la programacion de los microcontroladores motorola-freescaleintroduccion a la programacion de los microcontroladores motorola-freescale
introduccion a la programacion de los microcontroladores motorola-freescale
 
INTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALE
INTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALEINTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALE
INTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALE
 

Último

Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCCarlosEduardoSosa2
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnnlitzyleovaldivieso
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesMarisolMartinez707897
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxNadiaMartnez11
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOPsicoterapia Holística
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfAlfaresbilingual
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIAFabiolaGarcia751855
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfJonathanCovena1
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024IES Vicent Andres Estelles
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxpvtablets2023
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxBeatrizQuijano2
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 

Último (20)

Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 

Lenguajes ensambladores

  • 1. Instrucción:ACALLFunción:Llamada absoluta dentro de un bloque de 2KSintaxis:ACALL dir_11<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsACALL dir_11a10a9a810000dir 7-022-<br />Operación: ACALL<br />(PC) <= (PC) + 2 (SP) <= (SP) + 1 ((SP)) <= (PC7-0) (SP)<= (SP) + 1 ((SP)) <= (PC15-8) (PC10-0) <= dir_11<br />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.<br />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.<br />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.<br />Instrucción:ADDFunción:Suma el operando implicado al ACC y deja el resultado en ACCSintaxis:ADD A,operandoInstrucciónCódigo de Operación2º ByteBytesCiclosFlagsADD A,Rn00101rrr-11C-AC-OVADD A,direcc0x25direcc21C-AC-OVADD A,@Ri0010011i-11C-AC-OVADD A,#dato0x24dato21C-AC-OVOperación: ADD A,operando(A)<= (A) + operandoDescripció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.<br />Instrucción:ADDCFunción:Suma el operando implicado, el bit de acarreo y el ACC y deja el resultado en ACCSintaxis:ADDC A,operando<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsADDC A,Rn00111rrr-11C-AC-OVADDC A,direcc0x35direcc21C-AC-OVADDC A,@Ri0011011i-11C-AC-OVADDC A,#dato0x34dato21C-AC-OV<br />Operación: ADDC A,operando<br />(A)<= (A) + (C) + operando<br />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.<br />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.<br />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.<br />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.<br />Instrucción:AJMPFunción:Salto absoluto dentro de un bloque de 2KSintaxis:AJMP dir_11<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsAJMP dir_11a10a9a800001dir 7-022-<br />Operación: AJMP<br />(PC)<= (PC) + 2 (PC10-0)<= dir_11<br />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.<br />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.<br />Instrucción:ANLFunción:Realiza la AND bit a bit entre los dos operandos. Deja el resultado en operando1Sintaxis:ANL operando1,operando2<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsANL A,Rn01011rrr--11-ANL A,direcc0x55direcc-21-ANL A,@Ri0101011i--11-ANL A,#dato0x54dato-21-ANL direcc,A0x52direcc-21-ANL direcc,#dato0x53direccdato32-<br />Operación: ANL operando1,operando2<br />(operando1)<= (operando1) AND (operando2)<br />Descripción: ANL realiza la operación quot; ANDquot; bit a bit, entre operando1 y operando2, dejando el resultado en operando1. El valor del operando2 no resulta afectado.<br />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.<br />Instrucción:DAFunción:Ajuste decimal del acumulador para la sumaSintaxis:DA A<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsDA A0xD411C<br />Operación: DA A<br />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<br />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.<br />Su funcionamiento se realiza en dos fases:<br />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.<br />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.<br />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.<br />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).<br />Instrucción:JBFunción:Salta si el bit implicado vale 1Sintaxis:JB bit,offsetInstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsJB bit,offset0x20bitoffset32-Operación: JB bit,offset(PC)<= (PC) + 3 IF (bit) = 1 THEN (PC)<= (PC) + offsetDescripció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.<br />Instrucción:INCFunción:Incrementa en una unidad el operando implicadoSintaxis:INC operando<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsINC A0x04-11-INC Rn00001rrr-11-INC direcc0x05direcc21-INC @Ri0000011i-11-INC DPTR0xA3-12-<br />Operación: INC operando<br />operando<=  operando + 1<br />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.<br />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.<br />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.<br /> <br />Instrucción:JCFunción:Salta si el bit C vale 1Sintaxis:JC offset<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsJC offset0x40offset22-<br />Operación: JC offset<br />(PC)<= (PC) + 2 IF (C) = 1 THEN (PC)<= (PC) + offset<br />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.<br />Instrucción:CPLFunción:Complementa el bit implicadoSintaxis:CPL bit<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsCPL C0xB3-11CCPL bit0xB2bit21-<br />Operación: CPL bit<br />bit <=  NOT bit<br />Descripción: CPL complementa el bit indicado. CPL puede operar con el bit C o con cualquier bit direccionable de forma directa.<br />Instrucción:JBCFunción:Salta si el bit implicado vale 1, y borrar el bitSintaxis:JBC bit,offset<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsJBC bit,offset0x10bitoffset32-<br />Operación: JBC bit,offset<br />(PC)<= (PC) + 3IF (bit) = 1 THEN (bit)<= 0 (PC)<= (PC) + offset<br />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.<br />Instrucción:JNCFunción:Salta si el bit C vale 0Sintaxis:JNC offset<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsJNC offset0x50offset22-<br />Operación: JNC offset<br />(PC)<= (PC) + 2 IF (C) = 0 THEN (PC)<= (PC) + offset<br />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.<br />Instrucción:JZFunción:Salta si el Acumulador es 0Sintaxis:JZ offset<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsJZ offset0x60offset22-<br />Operación: JZ offset<br />(PC)<= (PC) + 2 IF (A) = 0 THEN (PC)<= (PC) + offset<br />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.<br />Instrucción:MOVFunción:Copiar operando2 sobre operando1.Sintaxis:MOV operando1,operando2<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsMOV A,Rn11101rrr--11-*MOV A,direcc0xE5direcc-21-MOV A,@Ri1110011i--11-MOV A,#dato0x74dato-21-MOV Rn,A11111rrr--11-MOV Rn,direcc10101rrrdirecc-22-MOV Rn,#dato01111rrrdato-21-MOV direcc,A0xF5direcc-21-MOV direcc,Rn10001rrrdirecc-22-*MOV direc1,direc20x85direc2direc132-MOV direcc,@Ri1000011idirecc-22-MOV direcc,#dato0x75direccdato32-MOV @Ri,A1111011i--11-MOV @Ri,direcc1010011idirecc-22-MOV @Ri,#dato0111011idato-21-MOV DPTR,#dato160x90dato 15-8dato 7-032-<br />Operación: MOV operando1,operando2<br />(operando1)<= (operando2)<br />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.<br />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.<br />Nota_2: En el caso de quot; MOV direc1,direc2quot; , los operandos se almacenan en orden inverso. Así la instrucción formada por los bytes 85H, 20H, 50H indica quot; Mover el contenido de la dirección 20H de RAM Interna a la dirección 50H de RAM Interna.<br />Instrucción:MOVFunción:Movimiento de bitSintaxis:MOV bit1,bit2<br />InstrucciónCódigo de OperaciónByte 2ºBytesCiclosFlagsMOV C,bit0xA2bit21CMOV bit,C0x92bit22-<br />Operación: MOV bit1,bit2<br />(bit1)<= (bit2)<br />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.<br />Instrucción:MOVXFunción:Mover un byte entre el acumulador y la memoria externa de datos XRAMSintaxis:MOVX operando1,operando2<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsMOVX A,@Ri1110001i12-MOVX A,@DPTR0xE012-MOVX @Ri,A1111001i12-MOVX @DPTR,A0xF012-<br />Operación: MOVX operando1,operando2<br />(operando1)<= (operando2)<br />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.<br /> <br />   <br />Instrucción:NOPFunción:No OPeraciónSintaxis:NOP<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsNOP0x0011-<br />Operación: NOP<br />(PC)<= (PC) + 1<br />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.   <br />Instrucción:PUSHFunción:Apilar un byte de RAM internaSintaxis:PUSH direcc<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsPUSH direcc0xC0direcc22-<br />Operación: PUSH direcc<br />(SP)<= (SP) + 1 ((SP))<= (direcc)<br />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.<br />Instrucción:LCALLFunción:Llamada largaSintaxis:LCALL dir_16<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsLCALL dir_160x12dir 15-8dir 7-032-<br />Operación: LCALL<br />(PC)<= (PC) + 3 (SP)<= (SP) + 1 ((SP))<= (PC.7-0) (SP)<= (SP) + 1 ((SP))<= (PC.15-8) (PC)<= addr15-0<br />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.<br /> <br />Instrucción:SETBFunción:Pone a uno el bit implicadoSintaxis:SETB bitInstrucciónCódigo de Operación2º ByteBytesCiclosFlagsSETB C0xD3-11CSETB bit0xD2bit21-Operación: SETB bitbit <=  1Descripción: SETB pone a uno el bit indicado. Puede operar con el bit C o con cualquier bit direccionable de forma directa.<br />Instrucción:DECFunción:Decrementa en una unidad el operando implicadoSintaxis:DEC operando<br />InstrucciónCódigo de Operación2º ByteBytesCiclosFlagsDEC A0x14-11-DEC Rn00011rrr-11-DEC direcc0x15direcc21-DEC @Ri0001011i-11-<br />Operación: DEC operando<br />operando<=  operando - 1<br />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.<br />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.<br />Instrucción:RETFunción:Retorno desde subrutinaSintaxis:RET<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsRET0x2212-<br />Operación: RET<br />(PC15-8)<= ((SP)) (SP)<= (SP) - 1 (PC7-0)<= ((SP)) (SP)<= (SP) - 1<br />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.<br />Instrucción:XRLFunción:O-exclusiva bit a bit entre dos operandos.Sintaxis:XRL operando1,operando2<br />InstrucciónCódigo de OperaciónByte 2ºByte 3ºBytesCiclosFlagsXRL A,Rn01101rrr--11-XRL A,direcc0x65direcc-21-XRL A,@Ri0110011i--11-XRL A,#dato0x64dato-21-XRL direcc,A0x62direcc-21-XRL direcc,#dato0x63direccdato32-<br />Operación: XRL operando1,operando2<br />(operando1)<= (operando1) XOR (operando2)<br />Descripción: XRL realiza la operación quot; O-exclusivaquot; bit a bit, entre operando1 y operando2, dejando el resultado en operando1. El valor del operando2 no resulta afectado.<br />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.<br />Instrucción:CLRFunción:Pone a cero los ocho bits del acumuladorSintaxis:CLR A<br />InstrucciónCódigo de OperaciónBytesCiclosFlagsCLR A0xE411-<br />Operación: CLR A<br />(A) <=  0<br />Descripción: CLR A pone a cero el acumulador. <br />Instrucción:RLFunción:Rota el acumulador hacia la izquierdaSintaxis:RL AInstrucciónCódigo de OperaciónBytesCiclosFlagsRL A0x2311-Operación: RL A(An + 1)<= (An) Para n = 0-6 (A0)<= (A7)Descripción: RL A rota los ocho bits del acumulador un lugar hacia la izquierda. El bit 7 se lleva a la posición del bit 0.<br />