Sistema de comando de microordenador de un solo chip MCS-51 Modo de direccionamiento del sistema
- 1. Definición del sistema de comando
- 2. Instrucciones de SCM
- 2.1 Formato de instrucción SCM
- 2.2 Símbolos comúnmente utilizados en un microordenador de un solo chip
- 3. Modo de direccionamiento
- 3.0 Resumen primero:
- 3.0.1 Varios modos de direccionamiento
- 3.0.2 Espacio de almacenamiento y modo de direccionamiento correspondiente
- 3.1 Direccionamiento inmediato
- 3.2 Direccionamiento directo
- 3.3 Direccionamiento de registro
- 3.4 Registro de direccionamiento indirecto
- 3.5 Direccionamiento indexado
- 3.6 Direccionamiento relativo
- Direccionamiento de 3.7 bits
1. Definición del sistema de comando
- Una instrucción es un comando que especifica una computadora para realizar una función específica
- El programa es una serie de instrucciones.
- MCS-51 MCU está equipado con 111 instrucciones en 5 categorías que incluyen transmisión, operaciones aritméticas, operaciones lógicas, transferencia de control y operaciones de bits
- El usuario puede especificar los operandos a través de 7 modos de direccionamiento: direccionamiento inmediato, direccionamiento de registro, direccionamiento indirecto de registro, direccionamiento directo, direccionamiento indexado, direccionamiento relativo, direccionamiento de bits
2. Instrucciones de SCM
2.1 Formato de instrucción SCM
Etiqueta: Opcode Mnemonic Target Operand, Source Operand; Comentario
Ejemplo:
PRINCIPAL: MOVER A, # 10H; poner 10H en el acumulador
2.2 Símbolos comúnmente utilizados en un microordenador de un solo chip
Símbolo | Función |
---|---|
A (ACC) | Acumulador |
si | Registros especiales para instrucciones de multiplicar y dividir |
C | Carry flag o carry bit, o acumulador en procesador booleano |
DPTR | Puntero de datos, se puede usar como un registro de dirección de 16 bits |
Rn (0 ~ 7) | Los ocho registros de trabajo R0 ~ R7 del conjunto de registros actual están determinados por RS1 y RS0 en el PSW. |
Ri (0,1) | Dos registros disponibles para direccionamiento indirecto |
# # | Símbolo de prefijo inmediato |
@ @ | Símbolo de prefijo del registro de trabajo en direccionamiento indirecto |
(X) | Contenido en la unidad X |
PS | Representa la dirección de la instrucción actual. |
/ / | Invierte el operando de bit, pero no afecta el valor original del bit. |
3. Modo de direccionamiento
3.0 Resumen primero:
3.0.1 Varios modos de direccionamiento
Modo de direccionamiento | Variables utilizadas | Espacio de direcciones | Explicación suplementaria |
---|---|---|---|
Direccionamiento inmediato | #datos | Registro del programa | Obtener directamente el operando después de la instrucción |
Direccionamiento directo | directo | 128B menos RAM en chip y SFR | Saca el contenido de la dirección directamente |
Registrar direccionamiento | R0 ~ R7, A, B, DPTR | Registro de trabajo y SFR parcial | Obtenga el contenido del registro directamente |
Registrar direccionamiento indirecto | @ R0, @ R1, @ DPTR | RAM en chip, RAM en chip | Obtenga el contenido de la dirección almacenada en el registro |
Direccionamiento indexado | @ A + PC, @ A + DPTR | Memoria de programa | Tome el contenido de la dirección después de agregar el contenido de los dos registros. |
Direccionamiento relativo | @ PC + offset | Memoria de programa | Tome el contenido correspondiente a la dirección después del desplazamiento de la PC |
Direccionamiento de bits | poco | Direccionamiento de bits en chip y SFR parcial | Toma un poco de contenido |
3.0.2 Espacio de almacenamiento y modo de direccionamiento correspondiente
Espacio de almacenamiento de microordenador de un solo chip
Espacio de almacenamiento | Modo de direccionamiento |
---|---|
Registro de trabajo interno 00H-1FH | Registrarse, directo, indirecto |
Espacio interno de bits 20H-2FH | Bit, directo, indirecto |
RAM interna de usuario 30H-7FH | Indirecta |
RAM interna de usuario 80H-FFH | Indirecta |
Registro interno de la función charter 80H-FFH SFT | Directo, para (parte de) |
RAM externa | Indirecta |
Memoria externa del programa ROM | Indizado, relativo |
3.1 Direccionamiento inmediato
- Definición: el operando sigue inmediatamente al código de operación, se incluye en el byte de instrucción y se almacena en la memoria del programa con el código de operación
- Ejemplo:
MOV A, # 52H; 52H-> A
3.2 Direccionamiento directo
- Definición: la dirección de la memoria se proporciona directamente en la instrucción, el operando está en la memoria
- Ejemplo: MOV A, 52H; (52h) -> A
3.3 Direccionamiento de registro
- Definición: especifique el nombre del registro, el contenido del registro es el operando
- Ejemplo:
MOV A, R0; ((R0)) -> A - Ámbito de aplicación:
I. Hay 32 grupos de R0-R7 en total, y solo 8 del grupo de registro actual se pueden usar a la vez
. Ii. Registros parciales de funciones especiales A, B, DPTR, etc.
3.4 Registro de direccionamiento indirecto
Regulaciones
- 128 bits bajos y 128 bits altos de RAM básica en chip, indirectamente usando @ R0, @ R1
- RAM sin chip (64kb): use @DPTR
- RAM de expansión fuera del chip: si es inferior a 256B, use DPTR o @ R0, @ R1 indirectamente, si es superior a 256B, use @DPTR
例子 :
MOV DPTR, # 3456H; 3456H->
DPTR MOVX A, @ DPTR; ((DPTR)) -> A
3.5 Direccionamiento indexado
- Definición: dirección base (DPTR y PC almacenan la dirección base correspondiente al operando por adelantado) + desplazamiento (el acumulador A almacena el desplazamiento correspondiente por adelantado) como la dirección efectiva del operando
- Ejemplo:
MOV A, # 22H;
MOV offset DPTR, # 63A0H; dirección base
MOV A, @ A + DPTR; ((A) + (DPTR)) -> A
3.6 Direccionamiento relativo
-
Definición: El direccionamiento relativo toma el valor actual de la PC del contador del programa como la dirección base, lo agrega al rel de desplazamiento relativo dado en la instrucción y usa la suma como la dirección de bifurcación del programa.
Dirección de destino = valor actual de PC + rel = dirección de almacenamiento de instrucciones + número de byte de instrucciones + rel
Asuntos que requieren atención:
I. El valor actual de la PC se refiere a la dirección de almacenamiento de la instrucción de bifurcación relativa más el número de bytes de la instrucción, es decir, el valor al final de la búsqueda de la instrucción de bifurcación relativa.
El desplazamiento rel es un número de byte único con signo, expresado como complemento, y su rango de valores es -128 ~ +127 (00H ~ FFH). Los números negativos indican un cambio de la dirección actual a una dirección más pequeña, y los números positivos indican un cambio de la dirección actual a una dirección más grande. -
Ejemplo:
SJMP 08H; PC + 2 + 08H-> PC
ps:
a. Por qué +2, porque SJMP (ocupa un byte), entonces se toma 08H (también un byte)
b. El último 200AH se pone en PC
Direccionamiento de 3.7 bits
- Suplemento:
bit (bit, un código binario), byte (byte, código binario de 8 bits), palabra (palabra, en circunstancias normales, dos bytes por palabra, 16 bits) - El direccionamiento de bits puede entenderse como la eliminación del valor de un cierto bit, la forma específica tiene los siguientes cuatro
Forma | Ejemplos | Descripción |
---|---|---|
Usar dirección de bit directamente | MOV C, 0D5H | El estado del bit 5 (dirección de bit D5H) de la PSW se envía al indicador de bit. |
Dirección de la unidad más número de bit | MOV C, 0D0H.5 | El estado del bit 5 (dirección de bit D5H) de PSW (dirección de unidad 0D0H) se envía al bit de indicador de bit. |
Registro de funciones especiales más número de serie | MOV C, PSW.5 | ; Envíe el estado del bit 5 de PSW al indicador de bit. |
Representación de nombre de bit | MOV C, F0 | ; Envíe el estado del bit 5 de PSW (dirección de bit D5H, nombre de bit F0) al indicador de bit. |