Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 30

Conjunto de instrucciones 8051

Instrucciones por opcode


0x0 0x 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
0x01 0x02 0x04
0 03 5 6 7 8 9 a b c d e f
0x NOP AJM LJMP RR Cª Cª Cª Cª Cª Cª Cª Cª Cª Cª Cª Cª
00 P
UNA
0x JBC LLA LCA RR DIC DIC DIC DIC DIC DIC DIC DIC DIC DIC DIC DIC
10 MAD LL C
A
RETI AÑ AÑ AÑ AÑ AÑ AÑ AÑ AÑ AÑ AÑ AÑ
0x JB AJM AÑADI
RAD RL ADI ADI ADI ADI ADI ADI ADI ADI ADI ADI ADI
20 P R
O R R R R R R R R R R R
UNA
0x LLA RL AD AD AD AD AD AD AD AD AD AD AD
JNB RETI ADDC
30 MAD C DC DC DC DC DC DC DC DC DC DC DC
A
0x JC AJM OR OR OR OR OR OR OR OR OR OR OR OR
ORL ORL
40 P L L L L L L L L L L L L
UNA
0x JNC LLA ANL AN ANL AN AN AN AN AN AN AN AN AN AN AN
50 MAD L L L L L L L L L L L L
A
0x JZ AJM XR XR XR XR XR XR XR XR XR XR XR XR
XRL XRL
60 P L L L L L L L L L L L L
UNA
0x JNZ LLA ORL JM MOV MO MO MO MO MO MO MO MO MO MO MO
70 MAD P V V V V V V V V V V V
A

0x SJM AJM ANL M MO MO MO MO MO MO MO MO MO MO MO


OV DIV
80 P P
C
V V V V V V V V V V V

UNA
0x MO LLA MOV M SU SU SU SU SU SU SU SU SU SU SU
OV SUBB
90 V MAD
C
BB BB BB BB BB BB BB BB BB BB BB
A
0x AJM MO MO MO MO MO MO MO MO MO MO
ORL MOV Cª MUL ?
a0 P V V V V V V V V V V

0x UNA
LLA CP CJN CJN CJN CJN CJN CJN CJN CJN CJN CJN CJN
b ANL MAD CPL L CJNE E E E E E E E E E E E
0 A

0x EMP AJM CL
INTERC
XC XC XC XC XC XC XC XC XC XC XC
UJA CLR AMBIA
c0 R P R H H H H H H H H H H H
R
0x POP UNA
LLA SE DJN XC XC DJN DJN DJN DJN DJN DJN DJN DJN
d ULA MAD SETB TB DA Z HD HD Z Z Z Z Z Z Z Z
0 R A

0x MO AJM MOV M MO MO MO MO MO MO MO MO MO MO MO
OV CLR
e0 VX P X
X
V V V V V V V V V V V

UNA
0x MO LLA MOV M MO MO MO MO MO MO MO MO MO MO MO
OV CPL
f0 VX MAD X X
V V V V V V V V V V V
A

Lista alfabética de instrucciones

 ACALL - Llamada Absoluta


 ADD, ADDC - Agregar acumulador (con Carry)
 AJMP - Absolute Jump
 ANL - Bitwise AND
 CJNE - Compare y salte si no es igual
 CLR - Borrar registro
 CPL - Complementar el registro
 DA - Ajuste decimal
 DEC - Decrement Register
 DIV - Acumulador de división by B
 DJNZ - Decrement Register y Jump If Not Zero
 INC - Incremento de registro
 JB - Jump if Bit Set
 JBC - Jump if Bit Set y Clear Bit
 JC : salta si llevas un conjunto
 JMP - Salta a la dirección
 JNB : salto si no se establece el bit
 JNC : salta si no llevas
 JNZ : salta si el acumulador no es cero
 JZ - Saltar si el acumulador cero
 LCALL - Larga llamada
 LJMP - salto de longitud
 MOV - Mover memoria
 MOVC - Move Code Memory
 MOVX - Mueva la memoria extendida
 MUL - Multiply Acumulator by B
 NOP - Sin operación
 ORL - Bitwise O
 POP - Valor Pop de Stack
 PUSH - Empuje el valor en la pila
 RET - Retorno de la subrutina
 RETI - Regreso de la interrupción
 RL - Girar el acumulador hacia la izquierda
 RLC - Gire el acumulador hacia la izquierda a través de Carry
 RR - Girar el acumulador hacia la derecha
 RRC - Gire el acumulador hacia la derecha a través de Carry
 SETB - Set Bit
 SJMP - Salto corto
 SUBB - Restar del acumulador con el préstamo
 SWAP - Nibbles de acumulador de intercambio
 XCH - Bytes de cambio
 XCHD - Dígitos de intercambio
 XRL : exclusivo de Bitwise O
 Indefinido - Instrucción indefinida

Conjunto de instrucciones 8051: ACALL


Operación: UNA LLAMADA
Función: Llamada absoluta dentro del bloque 2K
Sintaxis: Dirección de código de ACALL
Instrucciones OpCode Bytes Banderas
ACALL página0 0x11 2 Ninguna
ACALL página1 0x31 2 Ninguna
ACALL página2 0x51 2 Ninguna
ACALL página3 0x71 2 Ninguna
ACALL página 4 0x91 2 Ninguna
ACALL página 5 0xB1 2 Ninguna
ACALL página 6 0xD1 2 Ninguna
ACALL página 7 0xF1 2 Ninguna

Descripción: ACALL llama incondicionalmente a una subrutina en


la dirección de código indicada . ACALL presiona la dirección de la
instrucción que sigue a ACALL en la pila, primero el byte menos significativo
y el segundo más significativo en bytes. El contador de programa se actualiza
para que la ejecución del programa continúe en la dirección indicada.

El nuevo valor para el contador de programa se calcula reemplazando el byte


menos significativo del contador de programa con el segundo byte de la
instrucción ACALL y reemplazando los bits 0-2 del byte más significativo del
contador de programa con 3 bits. que indica la página. Los bits 3 a 7 del byte
más significativo del Contador de programa permanecen sin censura.
Como ACALL solo afecta a 11 bits del Contador de programa, las llamadas
solo se pueden realizar a rutinas ubicadas dentro del mismo bloque 2k que el
primer byte que sigue a ACALL.

Ver también : LCALL , RET

Conjunto de instrucciones 8051: ADD


Operación: ADD, ADDC
Función: Agregar acumulador, Agregar acumulador con Carry
Sintaxis: ADD A, operando
ADDC A, operando

Instruccion OpCod Byte Bandera Instruccion OpCod Byte Bandera


es e s s es e s s
AGREGAR C, AC, ADDC A, C, AC,
0x24 2 0x34 2
A, # datos OV # datos OV
ADD ADDC
C, AC, C, AC,
A, iram 0x25 2 A, iram 0x35 2
OV OV
addr addr
AGREGAR C, AC, ADDC A, C, AC,
0x26 1 0x36 1
A, @ R0 OV @ R0 OV
AGREGAR C, AC, ADDC A, C, AC,
0x27 1 0x37 1
A, @ R1 OV @ R1 OV
AGREGAR C, AC, ADDC A, C, AC,
0x28 1 0x38 1
A, R0 OV R0 OV
AGREGAR C, AC, ADDC A, C, AC,
0x29 1 0x39 1
A, R1 OV R1 OV
AGREGAR C, AC, ADDC A, C, AC,
0x2A 1 0x3A 1
A, R2 OV R2 OV
AGREGAR C, AC, ADDC A, C, AC,
0x2B 1 0x3B 1
A, R3 OV R3 OV
AGREGAR C, AC, ADDC A, C, AC,
0x2C 1 0x3C 1
A, R4 OV R4 OV
AGREGAR C, AC, ADDC A, C, AC,
0x2D 1 0x3D 1
A, R5 OV R5 OV
AGREGAR C, AC, ADDC A, C, AC,
0x2E 1 0x3E 1
A, R6 OV R6 OV
AGREGAR C, AC, ADDC A, C, AC,
0x2F 1 0x3F 1
A, R7 OV R7 OV

Descripción: Descripción: ADD y ADDC agregan el operando de valor al


valor del Acumulador, dejando el valor resultante en el
Acumulador. El operando de valor no se ve afectado. ADD y ADDC
funcionan de forma idéntica, excepto que ADDC agrega el valor de operando,
así como el valor de la bandera de acarreo, mientras que ADD no agrega la
bandera de acarreo al resultado.

El bit de acarreo (C) se establece si hay una transferencia del bit 7. En otras
palabras, si el valor sumado sin signo del acumulador, operando y (en el caso
de ADDC) el indicador de acarreo excede de 255, se establece Carry. De lo
contrario, el bit de carga se borra.

El bit Auxillary Carry (AC) se establece si hay un carry-out del bit 3. En


otras palabras, si el valor sumado sin signo del nibble bajo del
Acumulador,operando y (en el caso de ADDC), el indicador Carry excede 15
se establece la bandera de Transporte Auxiliar. De lo contrario, se borra la
bandera de Transporte Auxiliar.

El bit de desbordamiento (OV) se establece si hay una transferencia del bit 6


o del bit 7, pero no ambas. En otras palabras, si la adición del acumulador,
el operando y (en el caso de ADDC) la bandera de acarreo tratada como
valores firmados resulta en un valor que está fuera del rango de un byte
firmado (-128 a +127) el desbordamiento bandera está establecida. De lo
contrario, se borra el indicador de Desbordamiento.

Ver también: SUBB , DA , INC , DEC

Conjunto de instrucciones 8051: AJMP


Operación: AJMP
Función: Salto absoluto dentro del bloque 2K
Sintaxis: Dirección de código AJMP
Instrucciones OpCode Bytes Banderas
AJMP página0 0x01 2 Ninguna
AJMP página1 0x21 2 Ninguna
AJMP página2 0x41 2 Ninguna
AJMP página3 0x61 2 Ninguna
AJMP página4 0x81 2 Ninguna
AJMP page5 0xA1 2 Ninguna
AJMP page6 0xC1 2 Ninguna
AJMP página7 0xE1 2 Ninguna

Descripción: AJMP salta incondicionalmente a la dirección de


código indicada . El nuevo valor para el contador de programas se calcula
reemplazando el byte menos significativo del contador de programas con el
segundo byte de la instrucción AJMP y reemplazando los bits 0-2 del byte
más significativo del contador de programas con 3 bits. que indican la
página del byte que sigue la instrucción AJMP . Los bits 3 a 7 del byte más
significativo del Contador de programa permanecen sin censura.

Dado que solo 11 bits del Contador de programa se ven afectados por AJMP,
solo se pueden realizar saltos al código ubicado dentro del mismo bloque 2k
que el primer byte que sigue a AJMP.

Ver también : LJMP , SJMP

Conjunto de instrucciones 8051: ANL


Operación: ANL
Función: Bitwise Y
Sintaxis: ANL operando1 , operando2
Instrucciones OpCode Bytes Banderas
ANL iram addr , A 0x52 2 Ninguna
ANL iram addr , # data 0x53 3 Ninguna
ANL A, # data 0x54 2 Ninguna
ANL A, iram addr 0x55 2 Ninguna
ANL A, @ R0 0x56 1 Ninguna
ANL A, @ R1 0x57 1 Ninguna
ANL A, R0 0x58 1 Ninguna
ANL A, R1 0x59 1 Ninguna
ANL A, R2 0x5A 1 Ninguna
ANL A, R3 0x5B 1 Ninguna
ANL A, R4 0x5C 1 Ninguna
ANL A, R5 0x5D 1 Ninguna
ANL A, R6 0x5E 1 Ninguna
ANL A, R7 0x5F 1 Ninguna
ANL C, bit addr 0x82 2 do
ANL C, / bit addr 0xB0 2 do

Descripción: ANL realiza una operación "Y" a nivel de bit


entre operando1 y operando2 , dejando el valor resultante en operando1 . El
valor de operando2 no se ve afectado. Un "Y" lógico compara los bits de cada
operando y establece el bit correspondiente en el byte resultante solo si el bit
se estableció en los dos operandos originales, de lo contrario, se borra el bit
resultante.

Ver también: ORL , XRL

Conjunto de instrucciones 8051: CJNE


Operación: CJNE
Función: Compare y salte si no es igual
Sintaxis: CJNE operando1 , operando2 , reladdr
Instrucciones OpCode Bytes Banderas
CJNE A, # data , reladdr 0xB4 3 do
CJNE A, iram addr , reladdr 0xB5 3 do
CJNE @ R0, # data , reladdr 0xB6 3 do
CJNE @ R1, # data , reladdr 0xB7 3 do
CJNE R0, # data , reladdr 0xB8 3 do
CJNE R1, # data , reladdr 0xB9 3 do
CJNE R2, # data , reladdr 0xBA 3 do
CJNE R3, # data , reladdr 0xBB 3 do
CJNE R4, # data , reladdr 0xBC 3 do
CJNE R5, # data , reladdr 0xBD 3 do
CJNE R6, # data , reladdr 0xBE 3 do
CJNE R7, # data , reladdr 0xBF 3 do

Descripción: CJNE compara el valor de operando1 y operando2 y deriva a la


dirección relativa indicada si operando1 y operando2 no son iguales. Si los
dos operandos son iguales, el flujo del programa continúa con la instrucción
que sigue a la instrucción CJNE.

El bit Carry (C) se establece si operand1 es menor que operand2 ; de lo


contrario, se borra.

Ver también: DJNZ

Conjunto de instrucciones 8051: CLR


Operación: CLR
Función: Borrar registro
Sintaxis: Registro CLR
Instrucciones OpCode Bytes Banderas
CLR bit addr 0xC2 2 Ninguna
CLR C 0xC3 1 do
CLR A 0xE4 1 Ninguna

Descripción: CLR borra (establece a 0) todos los bit (s) del registro
indicado. Si el registro es un bit (incluido el bit de acarreo), solo se ve
afectado el bit especificado. Al borrar el acumulador se establece el valor del
acumulador en 0.

Ver también: SETB

Conjunto de instrucciones 8051: CPL


Operación: CPL
Función: Complemento Registrarse
Sintaxis: CPL operando
Instrucciones OpCode Bytes Banderas
CPL A 0xF4 1 Ninguna
CPL C 0xB3 1 do
CPL bit addr 0xB2 2 Ninguna

Descripción: CPL complementa operando , dejando el resultado


en operando . Si el operando es un bit único, el estado del bit se invertirá. Si
el operandoes el Acumulador, todos los bits en el Acumulador se
revertirán. Esto puede considerarse como "Accumulator Logical Exclusive
OR 255" o como "255-Acumulator". Si el operando se refiere a un bit de un
puerto de salida, el valor que se complementará se basa en el último valor
escrito en ese bit, no en el último valor leído de él.

Ver también : CLR , SETB

Conjunto de instrucciones 8051: DA


Operación: DA
Función: Acumulador de ajuste decimal
Sintaxis: DA A
Instrucciones OpCode Bytes Banderas
DA 0xD4 1 do

Descripción: DA ajusta el contenido del Acumulador para que se corresponda


con un número BCD (decimal codificado en binario) después de que se hayan
agregado dos números BCD mediante las instrucciones ADD o ADDC. Si el
bit de acarreo está configurado o si el valor de los bits 0-3 es superior a 9, se
agrega 0x06 al acumulador. Si el bit de acarreo se estableció cuando comenzó
la instrucción, o si se agregó 0x06 al acumulador en el primer paso, se agrega
0x60 al acumulador.

El bit de acarreo (C) se establece si el valor resultante es mayor que 0x99, de


lo contrario se borra.

Ver también: ADD , ADDC

Conjunto de instrucciones 8051: DEC


Operación: DIC
Función: Decrementar Registrarse
Sintaxis: Registro DEC
Instrucciones OpCode Bytes Banderas
DEC A 0x14 1 Ninguna
DEC iram addr 0x15 2 Ninguna
DEC @ R0 0x16 1 Ninguna
DEC @ R1 0x17 1 Ninguna
DEC R0 0x18 1 Ninguna
DEC R1 0x19 1 Ninguna
DEC R2 0x1A 1 Ninguna
DEC R3 0x1B 1 Ninguna
DEC R4 0x1C 1 Ninguna
DEC R5 0x1D 1 Ninguna
DEC R6 0x1E 1 Ninguna
DEC R7 0x1F 1 Ninguna

Descripción: DEC disminuye el valor de registro en 1. Si el valor inicial


de registro es 0, al disminuir el valor se restablecerá a 255 (0xFF hex.). Nota:
El indicador de acarreo NO se establece cuando el valor "pasa" de 0 a 255.

Ver también: INC , SUBB

Conjunto de instrucciones 8051: DIV


Operación: DIV
Función: Divide el acumulador por B
Sintaxis: DIV AB
Instrucciones OpCode Bytes Banderas
DIV AB 0x84 1 C, OV

Descripción: divide el valor sin signo del Acumulador por el valor sin signo
del registro "B". El cociente resultante se coloca en el acumulador y el resto se
coloca en el registro "B".

La bandera de acarreo (C) siempre se borra.


El indicador de desbordamiento (OV) se establece si se intentó la división
por 0; de lo contrario, se borra.

Ver también: MUL AB

Juego de instrucciones 8051: DJNZ


Operación: DJNZ
Función: Disminuir y saltar si no es cero
Sintaxis: DJNZ registro , reladdr
Instrucciones OpCode Bytes Banderas
DJNZ iram addr , reladdr 0xD5 3 Ninguna
DJNZ R0, reladdr 0xD8 2 Ninguna
DJNZ R1, reladdr 0xD9 2 Ninguna
DJNZ R2, reladdr 0xDA 2 Ninguna
DJNZ R3, reladdr 0xDB 2 Ninguna
DJNZ R4, reladdr 0xDC 2 Ninguna
DJNZ R5, reladdr 0xDD 2 Ninguna
DJNZ R6, reladdr 0xDE 2 Ninguna
DJNZ R7, reladdr 0xDF 2 Ninguna

Descripción: DJNZ disminuye el valor de registro en 1. Si el valor inicial


de registro es 0, al disminuir el valor se restablecerá a 255 (0xFF hex.). Si el
nuevo valor de registro no es 0, el programa se ramificará a la dirección
indicada por el relativo addr . Si el nuevo valor de registro es 0, el flujo del
programa continúa con la instrucción que sigue a la instrucción DJNZ.

Ver también: DEC , JZ , JNZ

Conjunto de instrucciones 8051: INC


Operación: Cª
Función: Incrementar el registro
Sintaxis: Registro INC
Instrucciones OpCode Bytes Banderas
INC A 0x04 1 Ninguna
INC iram addr 0x05 2 Ninguna
INC @ R0 0x06 1 Ninguna
INC @ R1 0x07 1 Ninguna
INC R0 0x08 1 Ninguna
INC R1 0x09 1 Ninguna
INC R2 0x0A 1 Ninguna
INC R3 0x0B 1 Ninguna
INC R4 0x0C 1 Ninguna
INC R5 0x0D 1 Ninguna
INC R6 0x0E 1 Ninguna
INC R7 0x0F 1 Ninguna
INC DPTR 0xA3 1 Ninguna

Descripción: INC incrementa el valor de registro en 1. Si el valor inicial


de registro es 255 (0xFF Hex), al aumentar el valor se reseteará a 0. Nota: El
indicador de acarreo NO se establece cuando el valor "se da vuelta" de 255 a
0.

En el caso de "INC DPTR", se incrementa el valor entero sin signo de dos


bytes de DPTR. Si el valor inicial de DPTR es 65535 (0xFFFF Hex), al
aumentar el valor se restablecerá a 0. Una vez más, el indicador de acarreo
NO se establece cuando el valor de DPTR "pasa" de 65535 a 0.

Ver también: ADD , ADDC , DEC

Conjunto de instrucciones 8051: JB


Operación: JB
Función: Jump if Bit Set
Sintaxis: JB bit addr , reladdr
Instrucciones OpCode Bytes Banderas
JB bit addr , reladdr 0x20 3 Ninguna
Descripción: JB se ramifica a la dirección indicada por reladdr si se establece
el bit indicado por bit addr . Si el bit no está configurado, la ejecución del
programa continúa con la instrucción que sigue a la instrucción JB.

Ver también: JBC , JNB

Conjunto de instrucciones 8051: JBC


Operación: JBC
Función: Saltar si Bit Set y Clear Bit
Sintaxis: JB bit addr , reladdr
Instrucciones OpCode Bytes Banderas
JBC bit addr , reladdr 0x10 3 Ninguna

Descripción: JBC se ramificará a la dirección indicada por reladdr si se


establece el bit indicado por bit addr . Antes de ramificar para reladdr, la
instrucción borrará el bit indicado. Si el bit no está configurado, la ejecución
del programa continúa con la instrucción que sigue a la instrucción JBC.

Ver también: JB , JNB

Conjunto de instrucciones 8051: JC


Operación: JC
Función: Saltar si llevar conjunto
Sintaxis: JC reladdr
Instrucciones OpCode Bytes Banderas
JC reladdr 0x40 2 Ninguna

Descripción: JC se ramificará a la dirección indicada por reladdr si está


configurado el bit de acarreo . Si el bit de acarreo no está configurado, la
ejecución del programa continúa con la instrucción que sigue a la instrucción
JC.

Ver también: JNC


Conjunto de instrucciones 8051: JMP
Operación: JMP
Función: Saltar al puntero de datos + acumulador
Sintaxis: JMP @ A + DPTR
Instrucciones OpCode Bytes Banderas
JMP @ A + DPTR 0x73 1 Ninguna

Descripción: JMP salta incondicionalmente a la dirección representada por la


suma del valor de DPTR y el valor del Acumulador.

Ver también: LJMP , AJMP , SJMP

Conjunto de instrucciones 8051: JNB


Operación: JNB
Función: Salta si el bit no está establecido
Sintaxis: JNB bit addr , reladdr
Instrucciones OpCode Bytes Banderas
JNB bit addr , reladdr 0x30 3 Ninguna

Descripción: JNB se ramificará a la dirección indicada por reladdress si el bit


indicado no está configurado. Si el bit está configurado, la ejecución del
programa continúa con la instrucción que sigue a la instrucción JNB.

Ver también: JB , JBC

Conjunto de instrucciones 8051: JNC


Operación: JNC
Función: Salta si no llevas puesto
Sintaxis: Reladdr de JNC
Instrucciones OpCode Bytes Banderas
Reladdr de JNC 0x50 2 Ninguna
Descripción: JNC se bifurca a la dirección indicada por reladdr si el bit de
acarreo no está configurado. Si el bit de acarreo está configurado, la ejecución
del programa continúa con la instrucción que sigue a la instrucción JNB.

Ver también: JC

Conjunto de instrucciones 8051: JNZ


Operación: JNZ
Función: Saltar si el acumulador no es cero
Sintaxis: JNZ reladdr
Instrucciones OpCode Bytes Banderas
JNZ reladdr 0x70 2 Ninguna

Descripción: JNZ se ramificará a la dirección indicada por reladdr si el


Acumulador contiene cualquier valor excepto 0. Si el valor del Acumulador es
cero, la ejecución del programa continúa con la instrucción que sigue a la
instrucción JNZ.

Ver también: JZ

Conjunto de instrucciones 8051: JZ


Operación: JZ
Función: Saltar si Accumulator Zero
Sintaxis: JNZ reladdr
Instrucciones OpCode Bytes Banderas
JZ reladdr 0x60 2 Ninguna

Descripción: JZ se bifurca a la dirección indicada por reladdr si el


Acumulador contiene el valor 0. Si el valor del Acumulador es distinto de
cero, la ejecución del programa continúa con la instrucción que sigue a la
instrucción JNZ.

Ver también: JNZ


Conjunto de instrucciones 8051: LCALL
Operación: LCALL
Función: Larga llamada
Sintaxis: Código LCALL addr
Instrucciones OpCode Bytes Banderas
Código LCALL addr 0x12 3 Ninguna

Descripción: LCALL llama a una subrutina de programa. LCALL incrementa


el contador del programa en 3 (para apuntar a la instrucción que sigue a
LCALL) y empuja ese valor a la pila (primero, byte bajo, segundo byte
alto). El Contador de programa se establece entonces en el valor de 16 bits
que sigue al código de operación LCALL, lo que hace que la ejecución del
programa continúe en esa dirección.

Ver también: ACALL , RET

Conjunto de instrucciones 8051: LJMP


Operación: LJMP
Función: Salto largo
Sintaxis: Código LJMP
Instrucciones OpCode Bytes Banderas
Código LJMP 0x02 3 Ninguna

Descripción: LJMP salta incondicionalmente al código especificado addr .

Ver también: AJMP , SJMP , JMP

Conjunto de instrucciones 8051: MOV


Operación: MOV
Función: Mover memoria
Sintaxis: MOV operando1 , operando2
Instrucciones OpCode Bytes Banderas
MOV @ R0, # datos 0x76 2 Ninguna
MOV @ R1, # datos 0x77 2 Ninguna
MOV @ R0, A 0xF6 1 Ninguna
MOV @ R1, A 0xF7 1 Ninguna
MOV @ R0, iram addr 0xA6 2 Ninguna
MOV @ R1, iram addr 0xA7 2 Ninguna
MOV A, # datos 0x74 2 Ninguna
MOV A, @ R0 0xE6 1 Ninguna
MOV A, @ R1 0xE7 1 Ninguna
MOV A, R0 0xE8 1 Ninguna
MOV A, R1 0xE9 1 Ninguna
MOV A, R2 0xEA 1 Ninguna
MOV A, R3 0xEB 1 Ninguna
MOV A, R4 0xEC 1 Ninguna
MOV A, R5 0xED 1 Ninguna
MOV A, R6 0xEE 1 Ninguna
MOV A, R7 0xEF 1 Ninguna
MOV A, iram addr 0xE5 2 Ninguna
MOV C, bit addr 0xA2 2 do
MOV DPTR, # data16 0x90 3 Ninguna
MOV R0, # datos 0x78 2 Ninguna
MOV R1, # datos 0x79 2 Ninguna
MOV R2, # datos 0x7A 2 Ninguna
MOV R3, # datos 0x7B 2 Ninguna
MOV R4, # datos 0x7C 2 Ninguna
MOV R5, # datos 0x7D 2 Ninguna
MOV R6, # datos 0x7E 2 Ninguna
MOV R7, # datos 0x7F 2 Ninguna
MOV R0, A 0xF8 1 Ninguna
MOV R1, A 0xF9 1 Ninguna
MOV R2, A 0xFA 1 Ninguna
MOV R3, A 0xFB 1 Ninguna
MOV R4, A 0xFC 1 Ninguna
MOV R5, A 0xFD 1 Ninguna
MOV R6, A 0xFE 1 Ninguna
MOV R7, A 0xFF 1 Ninguna
MOV R0, iram addr 0xA8 2 Ninguna
MOV R1, iram addr 0xA9 2 Ninguna
MOV R2, iram addr 0xAA 2 Ninguna
MOV R3, iram addr 0xAB 2 Ninguna
MOV R4, iram addr 0xAC 2 Ninguna
MOV R5, iram addr 0xAD 2 Ninguna
MOV R6, iram addr 0xAE 2 Ninguna
MOV R7, iram addr 0xAF 2 Ninguna
MOV bit addr , C 0x92 2 Ninguna
MOV iram addr , # datos 0x75 3 Ninguna
MOV iram addr , @ R0 0x86 2 Ninguna
MOV iram addr , @ R1 0x87 2 Ninguna
MOV iram addr , R0 0x88 2 Ninguna
MOV iram addr , R1 0x89 2 Ninguna
MOV iram addr , R2 0x8A 2 Ninguna
MOV iram addr , R3 0x8B 2 Ninguna
MOV iram addr , R4 0x8C 2 Ninguna
MOV iram addr , R5 0x8D 2 Ninguna
MOV iram addr , R6 0x8E 2 Ninguna
MOV iram addr , R7 0x8F 2 Ninguna
MOV iram addr , A 0xF5 2 Ninguna
MOV iram addr , iram addr 0x85 3 Ninguna

Descripción: MOV copia el valor de operando2 en operando1 . El valor


de operando2 no se ve afectado. Tanto operand1 como operand2 deben estar
en RAM interna. No se afectan banderas a menos que la instrucción esté
moviendo el valor de un bit en el bit de acarreo en cuyo caso el bit de acarreo
se ve afectado o a menos que la instrucción esté moviendo un valor en el
registro PSW (que contiene todos los indicadores de programa).

** Nota: En el caso de "MOV iram addr, iram addr", los bytes del operando
de la instrucción se almacenan en orden inverso. Es decir, la instrucción que
consiste en los bytes 0x85, 0x20, 0x50 significa "Mover los contenidos de la
ubicación RAM interna 0x20 a la ubicación RAM interna 0x50", mientras que
generalmente se presumiría lo contrario.

Ver también: MOVC , MOVX , XCH , XCHD , PUSH , POP

Conjunto de instrucciones 8051: MOVC


Operación: MOVC
Función: Mover Code Byte al Acumulador
Sintaxis: MOVC A, registro @ A +
Instrucciones OpCode Bytes Banderas
MOVC A, @ A + DPTR 0x93 1 Ninguna
MOVC A, @ A + PC 0x83 1 Ninguna

Descripción: MOVC mueve un byte desde Code Memory al Acumulador. La


dirección de Código de memoria desde la cual se moverá el byte se calcula
sumando el valor del Acumulador con DPTR o el Contador de programa
(PC). En el caso del Contador de programas, la PC primero se incrementa en 1
antes de sumarse con el acumulador.

Ver también: MOV , MOVX

Conjunto de instrucciones 8051: MOVX


Operación: MOVX
Función: Mover datos a / desde la memoria externa (XRAM)
Sintaxis: MOVX operando1 , operando2
Instrucciones OpCode Bytes Banderas
MOVX @ DPTR, A 0xF0 1 Ninguna
MOVX @ R0, A 0xF2 1 Ninguna
MOVX @ R1, A 0xF3 1 Ninguna
MOVX A, @ DPTR 0xE0 1 Ninguna
MOVX A, @ R0 0xE2 1 Ninguna
MOVX A, @ R1 0xE3 1 Ninguna

Descripción: MOVX mueve un byte hacia o desde la memoria externa hacia


o desde el acumulador.

Si operand1 es @DPTR, el acumulador se mueve a la dirección de memoria


externa de 16 bits indicada por DPTR. Esta instrucción utiliza tanto P0 (puerto
0) como P2 (puerto 2) para generar la dirección y los datos de 16
bits. Si operand2 es DPTR, entonces el byte se mueve desde la Memoria
Externa al Acumulador.

Si operando1 es @ R0 o @ R1, el acumulador se mueve a la dirección de


memoria externa de 8 bits indicada por el registro especificado. Esta
instrucción utiliza solo P0 (puerto 0) para generar la dirección y los datos de 8
bits. P2 (puerto 2) no se ve afectado. Si operand2 es @ R0 o @ R1, entonces
el byte se mueve desde la Memoria Externa al Acumulador.

Ver también: MOV , MOVC

Conjunto de instrucciones 8051: MUL


Operación: MUL
Función: Multiplicar el acumulador por B
Sintaxis: MUL AB
Instrucciones OpCode Bytes Banderas
MUL AB 0xA4 1 C, OV

Descripción: Multiplica el valor sin signo del Acumulador por el valor sin
signo del registro "B". El byte menos significativo del resultado se coloca en
el Acumulador y el byte más significativo se coloca en el registro "B".

La bandera de acarreo (C) siempre se borra.

El indicador de desbordamiento (OV) se establece si el resultado es mayor


que 255 (si el byte más significativo no es cero), de lo contrario, se borrará.

Ver también: DIV


Conjunto de instrucciones 8051: NOP
Operación: NOP
Función: Ninguno, perder tiempo
Sintaxis: No operacion
Instrucciones OpCode Bytes Banderas
NOP 0x00 1 Ninguna

Descripción: NOP, como su nombre lo indica, hace que No Operation tenga


lugar durante un ciclo de máquina. NOP generalmente se usa solo por motivos
de tiempo. Absolutamente no banderas o registros se ven afectados.

Conjunto de instrucciones 8051: ORL


Operación: ORL
Función: Bitwise O
Sintaxis: ORL operando1 , operando2
Instrucciones OpCode Bytes Banderas
ORL iram addr , A 0x42 2 Ninguna
ORL iram addr , # datos 0x43 3 Ninguna
ORL A, # data 0x44 2 Ninguna
ORL A, iram addr 0x45 2 Ninguna
ORL A, @ R0 0x46 1 Ninguna
ORL A, @ R1 0x47 1 Ninguna
ORL A, R0 0x48 1 Ninguna
ORL A, R1 0x49 1 Ninguna
ORL A, R2 0x4A 1 Ninguna
ORL A, R3 0x4B 1 Ninguna
ORL A, R4 0x4C 1 Ninguna
ORL A, R5 0x4D 1 Ninguna
ORL A, R6 0x4E 1 Ninguna
ORL A, R7 0x4F 1 Ninguna
ORL C, bit addr 0x72 2 do
ORL C, / bit addr 0xA0 2 do

Descripción: ORL realiza una operación "OR" en modo bit


entre operando1 y operando2 , dejando el valor resultante en operando1. El
valor de operando2 no se ve afectado. Un "OR" lógico compara los bits de
cada operando y establece el bit correspondiente en el byte resultante si el bit
se estableció en cualquiera de los operandos originales, de lo contrario, se
borra el bit resultante.

Ver también: ANL , XRL

Conjunto de instrucciones 8051: POP


Operación: POPULAR
Función: Pop Value de Stack
Sintaxis: POPULAR
Instrucciones OpCode Bytes Banderas
POP iram addr 0xD0 2 Ninguna

Descripción: POP "pops" el último valor colocado en la pila en el iram


addr especificado. En otras palabras, POP cargará iram addr con el valor de la
dirección de RAM interna apuntada por el puntero de pila actual. El puntero
de la pila se reduce en 1.

Ver también: PUSH

Conjunto de instrucciones 8051: PUSH


Operación: EMPUJAR
Función: Empujar valor a la pila
Sintaxis: EMPUJAR
Instrucciones OpCode Bytes Banderas
PUSH iram addr 0xC0 2 Ninguna

Descripción: PUSH "empuja" el valor del irar addr especificado a la


pila. PUSH primero incrementa el valor del puntero de pila en 1, luego toma
el valor almacenado en iram addr y lo almacena en la RAM interna en la
ubicación apuntada por el puntero de pila incrementado.
Ver también: POP

Conjunto de instrucciones 8051: RET


Operación: RETIRADO
Función: Regreso de la subrutina
Sintaxis: RETIRADO
Instrucciones OpCode Bytes Banderas
RETIRADO 0x22 1 Ninguna

Descripción: RET se usa para regresar desde una subrutina previamente


llamada por LCALL o ACALL. La ejecución del programa continúa en la
dirección que se calcula sacando los 2 bytes superiores de la pila. El byte más
significativo se saca primero de la pila, seguido del byte menos significativo.

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

Conjunto de instrucciones 8051: RETI


Operación: RETI
Función: Regreso de la interrupción
Sintaxis: RETI
Instrucciones OpCode Bytes Banderas
RETI 0x32 1 Ninguna

Descripción: RETI se utiliza para regresar de una rutina de servicio de


interrupción. RETI primero habilita interrupciones de igual y menor prioridad
para la interrupción que está terminando. La ejecución del programa continúa
en la dirección que se calcula sacando los 2 bytes superiores de la pila. El byte
más significativo se saca primero de la pila, seguido del byte menos
significativo.

RETI funciona de forma idéntica a RET si se ejecuta fuera de una rutina de


servicio de interrupción.

Ver también: RET


Conjunto de instrucciones 8051: RL
Operación: RL
Función: Girar el acumulador hacia la izquierda
Sintaxis: RL A
Instrucciones OpCode Bytes Banderas
RL A 0x23 1 do

Descripción: desplaza los bits del acumulador hacia la izquierda. El bit más a
la izquierda (bit 7) del Acumulador se carga en el bit 0.

Ver también: RLC , RR , RRC

Conjunto de instrucciones 8051: RLC


Operación: RLC
Función: Gire el acumulador hacia la izquierda a través de Carry
Sintaxis: RLC A
Instrucciones OpCode Bytes Banderas
RLC A 0x33 1 do

Descripción: desplaza los bits del acumulador hacia la izquierda. El bit más a
la izquierda (bit 7) del acumulador se carga en la bandera de acarreo, y la
bandera de acarreo original se carga en el bit 0 del acumulador. Esta función
se puede usar para multiplicar rápidamente un byte por 2.

Ver también: RL , RR , RRC

Conjunto de instrucciones 8051: RR


Operación: RR
Función: Gire el acumulador hacia la derecha
Sintaxis: RR A
Instrucciones OpCode Bytes Banderas
RR A 0x03 1 Ninguna
Descripción: desplaza los bits del acumulador hacia la derecha. El bit más a
la derecha (bit 0) del Acumulador se carga en el bit 7.

Ver también: RL , RLC , RRC

Juego de instrucciones 8051: RRC


Operación: RRC
Función: Gire el acumulador hacia la derecha a través de Carry
Sintaxis: RRC A
Instrucciones OpCode Bytes Banderas
RRC A 0x13 1 do

Descripción: desplaza los bits del acumulador hacia la derecha. El bit más a
la derecha (bit 0) del acumulador se carga en la bandera de acarreo, y la
bandera de acarreo original se carga en el bit 7. Esta función se puede usar
para dividir rápidamente un byte entre 2.

Ver también: RL , RLC , RR

Conjunto de instrucciones 8051: SETB


Operación: SETB
Función: Set Bit
Sintaxis: SETB bit addr
Instrucciones OpCode Bytes Banderas
SETB C 0xD3 1 do
SETB bit addr 0xD2 2 Ninguna

Descripción: establece el bit especificado.

Ver también: CLR

Conjunto de instrucciones 8051: SJMP


Operación: SJMP
Función: Salto corto
Sintaxis: SJMP reladdr
Instrucciones OpCode Bytes Banderas
SJMP reladdr 0x80 2 Ninguna

Descripción: SJMP salta incondicionalmente a la dirección


especificada reladdr . Reladdr debe estar dentro de -128 o +127 bytes de la
instrucción que sigue a la instrucción SJMP.

Ver también: LJMP , AJMP

Conjunto de instrucciones 8051: SUBB


Operación: SUBB
Función: Reste del acumulador con el préstamo
Sintaxis: SUBB A, operando
Instrucciones OpCode Bytes Banderas
SUBB A, # data 0x94 2 C, AC, OV
SUBB A, iram addr 0x95 2 C, AC, OV
SUBB A, @ R0 0x96 1 C, AC, OV
SUBB A, @ R1 0x97 1 C, AC, OV
SUBB A, R0 0x98 1 C, AC, OV
SUBB A, R1 0x99 1 C, AC, OV
SUBB A, R2 0x9A 1 C, AC, OV
SUBB A, R3 0x9B 1 C, AC, OV
SUBB A, R4 0x9C 1 C, AC, OV
SUBB A, R5 0x9D 1 C, AC, OV
SUBB A, R6 0x9E 1 C, AC, OV
SUBB A, R7 0x9F 1 C, AC, OV

Descripción: SUBB resta el valor del operando y el indicador de acarreo del


valor del acumulador, dejando el valor resultante en el
acumulador. El operando de valor no se ve afectado.
El bit de acarreo (C) se establece si se requirió un préstamo para el bit 7; de
lo contrario, se borra. En otras palabras, si el valor sin signo que se resta es
mayor que el acumulador, se establece el indicador de acarreo.

El bit Auxillary Carry (AC) se establece si se requiere un préstamo para el


bit 3; de lo contrario, se borra. En otras palabras, el bit se establece si el nibble
bajo del valor que se resta fue mayor que el nibble bajo del Acumulador.

El bit Overflow (OV) se establece si se requirió un préstamo para el bit 6 o


para el bit 7, pero no para ambos. En otras palabras, la resta de dos bytes
firmados dio como resultado un valor fuera del rango de un byte firmado (-
128 a 127). De lo contrario, se borra.

Ver también: ADD , ADDC , DEC

Conjunto de instrucciones 8051: SWAP


Operación: INTERCAMBIAR
Función: Swap Acumulador Nibbles
Sintaxis: SWAP A
Instrucciones OpCode Bytes Banderas
SWAP A 0xC4 1 Ninguna

Descripción: SWAP intercambia los bits 0-3 del Acumulador con los bits 4-7
del Acumulador. Esta instrucción es idéntica a ejecutar "RR A" o "RL A"
cuatro veces.

Ver también: RL , RLC , RR , RRC

Conjunto de instrucciones 8051: Instrucción indefinida


Operación: Instrucción indefinida
Función: Indefinido
Sintaxis: ???
Instrucciones OpCode Bytes Banderas
??? 0xA5 1 do
Descripción: la instrucción "Indefinida" es, como su nombre indica, no una
instrucción documentada. El 8051 admite 255 instrucciones y el OpCode
0xA5 es el único OpCode que no utiliza ninguna función documentada. Como
no está documentado ni definido, no se recomienda que se ejecute. Sin
embargo, en base a mi investigación, la ejecución de esta instrucción
indefinida toma 1 ciclo de máquina y parece no tener ningún efecto en el
sistema, excepto que el bit de acarreo siempre parece estar configurado.

Nota: Recibimos información de un usuario de 8052.com de que la


instrucción indefinida realmente tiene un formato de bit1, bit2 indefinido y
efectivamente copia el valor de bit2 a bit1. En este caso, sería una instrucción
de tres bytes. No hemos tenido la oportunidad de verificar o refutar este
informe, por lo que lo presentamos al mundo como "información adicional".

Nota: Se informó que Philips 8051 modelo P89C669 usa el prefijo de


instrucción 0xA5 para permitir al usuario acceder a un área de SFR diferente
(extendida).

Conjunto de instrucciones 8051: XCH


Operación: XCH
Función: Bytes de intercambio
Sintaxis: XCH A, registrarse
Instrucciones OpCode Bytes Banderas
XCH A, @ R0 0xC6 1 Ninguna
XCH A, @ R1 0xC7 1 Ninguna
XCH A, R0 0xC8 1 Ninguna
XCH A, R1 0xC9 1 Ninguna
XCH A, R2 0xCA 1 Ninguna
XCH A, R3 0xCB 1 Ninguna
XCH A, R4 0xCC 1 Ninguna
XCH A, R5 0xCD 1 Ninguna
XCH A, R6 0xCE 1 Ninguna
XCH A, R7 0xCF 1 Ninguna
XCH A, iram addr 0xC5 2 Ninguna
Descripción: intercambia el valor del acumulador con el valor contenido en
el registro .

Ver también: MOV

Conjunto de instrucciones 8051: XCHD


Operación: XCHD
Función: Dígito de intercambio
Sintaxis: XCHD A, [@ R0 / @ R1]
Instrucciones OpCode Bytes Banderas
XCHD A, @ R0 0xD6 1 Ninguna
XCHD A, @ R1 0xD7 1 Ninguna

Descripción: intercambia los bits 0-3 del acumulador con los bits 0-3 de la
dirección de RAM interna apuntada indirectamente por R0 o R1. Los bits 4-7
de cada registro no se ven afectados.

Ver también: DA

Conjunto de instrucciones 8051: XRL


Operación: XRL
Función: Bitwise Exclusive O
Sintaxis: XRL operando1 , operando2
Instrucciones OpCode Bytes Banderas
XRL iram addr , A 0x62 2 Ninguna
XRL iram addr , # datos 0x63 3 Ninguna
XRL A, # datos 0x64 2 Ninguna
XRL A, iram addr 0x65 2 Ninguna
XRL A, @ R0 0x66 1 Ninguna
XRL A, @ R1 0x67 1 Ninguna
XRL A, R0 0x68 1 Ninguna
XRL A, R1 0x69 1 Ninguna
XRL A, R2 0x6A 1 Ninguna
XRL A, R3 0x6B 1 Ninguna
XRL A, R4 0x6C 1 Ninguna
XRL A, R5 0x6D 1 Ninguna
XRL A, R6 0x6E 1 Ninguna
XRL A, R7 0x6F 1 Ninguna

Descripción: XRL realiza una operación "EXCLUSIVA O" a nivel de bit


entre operando1 y operando2 , dejando el valor resultante en operando1 . El
valor de operando2 no se ve afectado. Un "OR EXCLUSIVO" lógico compara
los bits de cada operando y establece el bit correspondiente en el byte
resultante si el bit se estableció en cualquiera (pero no en ambos) de los
operandos originales, de lo contrario, el bit se borra.

Ver también: ANL , ORL

También podría gustarte