¿Cuáles son todas las instrucciones en lenguaje ensamblador en el microcontrolador 51?
Lista de funciones de instrucción del microcontrolador
Descripción del código mnemotécnico
MOV A, Rn E8~EF registro A
MOV A, directo E5 byte directo directo envía A
MOV A, @Ri ER~E7 RAM indirecta envía A
MOV A, #data 74 datos datos inmediatos envía A
MOV Rn, A F8~FF A se envía al registro
MOV Rn, dircet A8~AF dircet se envía directamente al registro
MOV Rn, #data 78~7F los datos son enviado al registro de datos inmediato
MOV dircet, A F5 dircet A envía bytes directos
MOV dircet, Rn 88~8F el registro dircet envía bytes directos
MOV dircet1, dircet2 85 dircet1 dircet2 byte directo para enviar byte directo
MOV dircet, @Ro 86~87 RAM indirecta para enviar byte directo
MOV dircet, #data 75 dircet datos datos inmediatos para enviar directamente Bytes
MOV @Ri, A F6~F7 A envía RAM indirecta
MOV @Ri, #data 76~77 datos Los bytes directos envían RAM indirecta
MOV @Ri, #data 76~77 datos datos inmediatos enviados a RAM indirecta
MOV DPTR, #data16 90 datos 15~8 Puntero de datos enviado constante de 16 bits
datos7 ~0
MOVC A, @A DPTR 93 Almacenamiento de programa direccionado por ((A) (DPTR))
Byte de dispositivo seleccionado A
MOVC A, @ A PC 83 Byte de memoria de programa direccionado por ((A) (PC));
Enviar A
MOVX A, @Ri E2~E3 enviar datos externos (dirección de 8 bits) enviar A
MOVX A, @DPTR E0 enviar datos externos (dirección de 16 bits) enviar A
MOVX @Ri, A F2~F3 A envía datos externos (dirección de 8 bits)
MOVX @DPTR, A F0 A envía datos externos (dirección de 16 bits)
PUSH dircet C0 dircet Empuja el byte directamente a la pila, SP aumenta en 1
POP dircet D0 dircet Empuja el byte directamente fuera de la pila, SP disminuye en 1
XCH A, Rn C8~CF Swap A y registros
XCH A, dircet C5 dircet Swap A y bytes directos
XCH A, @Ri C6~C7 Swap A y RAM indirecta
XCH A, @Ri D6~D7 Intercambia los bits bajos de A y RAM indirecta
SWAP A C4
Operación aritmética (intercambio de dos mordiscos de A)
AÑADIR A, el registro Rn 28~2F se añade a A
AÑADIR A, dircet 25 dircet El byte directo se añade a A
AÑADIR A, @Ri Se agrega 26~27 RAM indirecta A
AÑADIR A, #data 24data agrega datos inmediatos a A
AÑADIR A, Rn 38~3F el registro y el bit de acarreo se agregan a A p>
AÑADIR A, dircet 35dircet El byte directo y el bit de acarreo se añaden a A
AÑADIR A, @Ri 36~37 El byte indirecto y el bit de acarreo se añaden a A
ADD A, el número inmediato de datos de datos 34 y el bit de acarreo se agregan a A
ADD A, Rn 98~9F
A menos el bit de registro y acarreo
AÑADIR A, dircet 95 dircet A menos el byte directo y el bit de acarreo
AÑADIR A, @Ri 36~37 RAM indirecta y bit de acarreo añadidos A A
ADD A, los datos 34, el valor inmediato de los datos y el bit de acarreo se agregan a A
SUBB A, Rn 98~9F A resta el registro y el bit de acarreo
>SUBB A, dircet 95 dircet A menos el byte directo y el bit de acarreo
SUBB A, @Ri 96~97 A menos la RAM indirecta y el bit de acarreo
SUBB A, # datos 94 datos A menos el valor inmediato y el bit de acarreo
INC A 04 A más 1
INC Rn 08~0F Registro más 1
INC dircet 05 dircet Directo byte más 1
INC @Ri 06~07 RAM indirecta más 1
DEC A 14 A menos 1
DEC Rn 18~1F Registro menos 1
p>
DEC dircet 15 dircet Byte directo menos 1
DEC @Ri 16~17 RAM indirecta menos 1
INC DPTR A3 Puntero de datos más 1
MUL AB A4 A multiplicado por B
DIV AB 84 A dividido por B
DA A D4 A ajuste de suma decimal
Operaciones lógicas
ANL A, Rn 58~5F registra "Y" a A
ANL A, dircet 55 dircet recto
Conecte el byte "Y" a A
ANL A, @Ri 56~57 RAm indirecto "Y" a A
ANL A, #data 54 datos "Y" datos inmediatos a A
ANL dircet A 52 dircet A "Y" al byte directo
ANL dircet, #data 53 dircet datos "Y" número inmediato al byte directo
ORL A, Rn 48~4F Registro OR a A
ORL A, dircet 45 dircet Byte directo OR a A
ORL A, @Ri 46~ 47 RAM indirecta "o" a A
ORL A, #data 44 datos inmediatos "o" a A
dircet ORL, A 42 dircet A "o" al byte directo
dircet ORL, #data 43 datos directos "OR" inmediato al byte directo
XRL A, Rn 68~6F registra "XOR" a A
XRL A, dircet 65 dircet Byte directo "XOR" a A
XRL A, @Ri 66~67 RAM indirecta "XOR" a A
XRL A, #data 64 datos "XOR" datos inmediatos a A
XRL dircet A 62 dircet "XOR" A al byte directo
XRL dircet, #data 63 dircet datos inmediatos "XOR" al byte directo
CLR A E4 clear p>
CPL A F4 A negar
RL A 23 A desplazamiento circular hacia la izquierda
RLC A 33 A gira hacia la izquierda mediante transporte
RR A 03 A
Desplazamiento circular hacia la derecha
RRC A 13 Un desplazamiento circular hacia la derecha mediante acarreo
Transferencia de programa de control
ACALL addr 11 *1 addr(a7~a0) Llamada a subrutina absoluta
LCALL addr 16 12 addr(15~8) llamada de subrutina larga
addr(7~0)
RET 22 devolución de llamada de subrutina
Dirección RETI 11 32 interrupción de retorno de llamada
Dirección AJMP 11 △1 dirección(a7~a6) transferencia absoluta
Dirección LJMP 16 02dirección(15~8) transferencia larga
addr(7~0)
SJMP rel 80 rel transferencia corta, transferencia relativa
JMP @A DPTR 73 transferencia indirecta relativa a DPTR
JZ rel 60 rel A es transferencia cero
JNZ rel 70 rel A es transferencia cero
CJNE A, dircet, rel B5 dircet rel comparación directa de bytes con A, no igual Luego transferir
CJNE A, #data, rel B4 data rel Compara los datos inmediatos con A, transfiérelo si no es igual
CJNE A, Rn, #data, rel B8~BF data rel Compara el valor inmediato con el registro y transferir si no es igual
CJNE @Ri, #data, rel B6~B7 data rel Comparar el número inmediato con la RAM indirecta y transferir si no es igual
DJNZ Rn , rel D8~DF rel Disminuye el registro en 1 y transfiere si no es cero
DJNZ dircet, rel B5 dircet rel Disminuye el byte directo en 1 y transfiere si no es cero cero
NOP 00 operación vacía
*=a10a9a8l
△=a10a9a80
Operación de variable booleana
CLR C C3 borrar acarreo
CLR el bit C2 borra el bit directo
SETB C D3 establece el acarreo
El bit SETB D2 establece el bit directo
CPL C B3 invierte el acarreo
>CPL bit B2 inversión directa de bits
ANL C, bit 82 dit número directo "Y" para llevar
ANL C, /bit B0 inversión directa de bits "Y" ” para llevar
ORL C, bit 72 bit bit directo “OR” para llevar
ORL C, /bit A0 bit bit directo “o” para llevar
MOV C, bit A2, lleva directamente al bit de acarreo
Bit MOV, C 92 bits lleva al bit directo
JC rel 40 rel, el bit de acarreo es 1 para transferir
JNC rel 50 rel, bit de acarreo es 0, transferencia
bit JB, rel 20 bits rel, bit directo es 1, transferencia relativa
bit JNB, rel 30 bits, el bit directo rel es 0 de transferencia relativa
bit JBC, el bit rel directo de 10 bits a 1 transferencia relativa, luego borre el bit
[1]. 4) p>
RL A ; Desplazar el contenido del acumulador A hacia la izquierda una posición
RR A ; Desplazar el contenido del acumulador A hacia la derecha una posición
RLC A ; Acumulador El contenido en A junto con el bit de acarreo CY se desplaza un bit hacia la izquierda
RRC A;
La capacidad y el bit de acarreo CY se desplazan un bit hacia la derecha
[2]. Instrucción de intercambio de nibble del acumulador (1)
SWAP A; Intercambio de mordiscos bajos
[3]. Instrucción de negación (1)
CPL A; inversión bit a bit del contenido en el acumulador
[4]. (1)
CLR A; 0→(A), el contenido del acumulador se borra a 0
[5].
ANL A, datos; el contenido del acumulador A y el contenido de la unidad de dirección directa realizan operaciones lógicas Y. El resultado se almacena en el registro A.
Datos ANL, #data; realiza operaciones lógicas AND sobre los contenidos y datos inmediatos en la unidad de dirección directa. Los resultados se almacenan en ubicaciones de dirección directa.
ANL A, #data; realiza la operación lógica AND sobre el contenido del acumulador A y los datos inmediatos. El resultado se almacena en el acumulador A.
ANL A, Rn; El contenido del acumulador A y el contenido del registro Rn realizan operaciones lógicas AND. El resultado se almacena en el acumulador A.
Datos ANL, A; realizar operaciones lógicas AND sobre el contenido de la unidad de dirección directa y el contenido del acumulador A. Los resultados se almacenan en ubicaciones de dirección directa.
ANL A, @Ri; El contenido del acumulador A y el contenido de la unidad de dirección apuntada por el registro de trabajo Ri realizan una operación lógica AND. El resultado se almacena en el acumulador A.
[6]. Instrucciones de operación lógica OR (6 elementos)
La función de este conjunto de instrucciones es realizar una operación lógica OR sobre el contenido de las dos unidades. Si la dirección directa es una dirección de E/S, es una operación de "lectura-modificación-escritura".
ORL A, datos; el contenido del acumulador A y el contenido de la unidad de dirección directa realizan una operación OR lógica. El resultado se almacena en el registro A.
Datos ORL, #data; realiza una operación OR lógica sobre el contenido de la unidad de dirección directa y el valor inmediato. Los resultados se almacenan en ubicaciones de dirección directa.
ORL A, #data; El contenido del acumulador A y el valor inmediato realizan una operación lógica OR. El resultado se almacena en el acumulador A.
ORL A, Rn; El contenido del acumulador A y el contenido del registro Rn realizan una operación lógica OR. El resultado se almacena en el acumulador A.
Datos ORL, A; El contenido de la unidad de dirección directa y el contenido del acumulador A realizan una operación OR lógica. Los resultados se almacenan en ubicaciones de dirección directa.
ORL A, @Ri; El contenido del acumulador A y el contenido de la unidad de dirección apuntada por el registro de trabajo Ri realizan una operación lógica OR. El resultado se almacena en el acumulador A.
[7].Instrucciones de operación XOR lógica (6)
XRL A, datos; el contenido en el acumulador A y el contenido en la unidad de dirección directa realizan una operación XOR lógica. El resultado se almacena en el registro A.
Datos XRL, #data; el contenido en la unidad de dirección directa y el valor inmediato realizan una operación XOR lógica. Los resultados se almacenan en ubicaciones de dirección directa.
XRL A, #data; El contenido del acumulador A y el valor inmediato realizan una operación XOR lógica. El resultado se almacena en el acumulador A.
XRL A, Rn; El contenido del acumulador A y el contenido del registro Rn realizan una operación OR lógica exclusiva. El resultado se almacena en el acumulador A.
Datos XRL, A; el contenido de la unidad de dirección directa y el contenido del acumulador A realizan una operación OR lógica exclusiva. Los resultados se almacenan en ubicaciones de dirección directa.
XRL A, @Ri; El contenido del acumulador A y el contenido de la unidad de dirección apuntada por el registro de trabajo Ri realizan una operación lógica OR exclusiva.
El resultado se almacena en el acumulador A
Análisis de instrucciones de transferencia de control
[1]. Instrucciones de transferencia incondicionales (4)
LJMP addr16→ (PC). ), asigna un nuevo valor (dirección de 16 bits) al contador del programa
AJMP addr11; (PC) 2→(PC), addr11→(PC10-0) asigna un nuevo valor (11 bits) dirección) al contador del programa, (PC15-11) Sin cambios
SJMP rel; (PC) 2 rel→(PC) Primero agregue 2 al contador del programa actual y luego agregue el desplazamiento para asignar un nuevo valor al contador del programa
JMP @A DPTR (A) (DPTR) → (PC), el valor de la unidad de dirección apuntada por el acumulador más el valor del puntero de datos asigna un nuevo valor al contador del programa
[2]. Instrucciones de transferencia de condición (8 elementos)
JZ rel; (PC) 2 rel→(PC), si el contenido está en el acumulador es 0, luego transfiéralo a la dirección señalada por el desplazamiento; de lo contrario, el programa se ejecuta hacia abajo
JNZ rel; no es 0, entonces se transferirá a la dirección señalada por el desplazamiento; de lo contrario, el programa Ejecutar hacia abajo
CJNE A, data, rel A≠(data), (PC) 3 rel→(PC; ), el contenido en el acumulador no es igual al contenido de la unidad de dirección directa, luego se transfiere al desplazamiento La dirección apuntada por el desplazamiento; de lo contrario, el programa se ejecutará hacia abajo
CJNE A, #data, rel; A≠#data, (PC) 3 rel→ (PC), el contenido en el acumulador no es igual al número inmediato, luego transfiéralo a la dirección señalada por el desplazamiento; de lo contrario, el programa continúa ejecutándose
CJNE Rn, #data, rel; A≠#data, (PC) 3 rel→ (PC), registro de trabajo Si el contenido en Rn no es igual al número inmediato, se transferirá a la dirección señalada por el desplazamiento, de lo contrario el programa se ejecutará hacia abajo
CJNE @Ri, #data, rel; A≠#data, (PC) 3 rel→ (PC), el contenido en la unidad de dirección señalada por el registro de trabajo Ri no es igual al valor inmediato, luego se transfiere a la dirección señalada por el desplazamiento; de lo contrario, el programa continúa ejecutando
Análisis de instrucciones de operación de variable booleana
p>[1]. Instrucciones de transferencia de bits (2)
MOV C, bit; bit→CY, un determinado bit de datos se envía a CY
MOV bit, C →bit; , Los datos de CY se envían a un determinado bit
[2]. Instrucciones de restablecimiento de bits (4)
CLR C; bit; 0→bit, borra un determinado bit
SETB C; 1→CY, establece CY
SETB bit, establece un determinado bit
[3]. Instrucciones de operación de bits (6)
ANL C, bit; (CY)∧(bit)→CY
ANL C, /bit ( CY)∧( )→CY
ORL C, bit; (CY)∨(bit)→CY
ORL C, /bit (CY)∧()→CY
CPL C ;()→CY
bit CPL
;()→bir
[4]. Instrucción de transferencia de control de bits (5)
JC rel; (CY)=1 transferencia, (PC) 2 rel→PC, de lo contrario el programa Ejecutar hacia abajo, (PC) 2→PC.
JNC rel; (CY)=0 transferencia, (PC) 2 rel→PC, de lo contrario el programa se ejecutará hacia abajo, (PC) 2→PC.
Bit JB, rel; el estado del bit se transfiere a 1.
Bit JNB, rel; el estado del bit se transfiere a 0.
Bit JBC, rel; transfiere el estado del bit a 1 y borra el bit a "0".