Mode d'adressage du système de commande de micro-ordinateur à puce unique MCS-51
1. Définition du système de commande
- Une instruction est une commande qui spécifie un ordinateur pour exécuter une fonction spécifique
- Le programme est une série d'instructions
- Le MCS-51 MCU est équipé de 111 instructions dans 5 catégories, y compris la transmission, les opérations arithmétiques, les opérations logiques, le transfert de contrôle et les opérations sur les bits
- L'utilisateur peut spécifier les opérandes à travers 7 modes d'adressage: adressage immédiat, adressage de registre, adressage indirect de registre, adressage direct, adressage indexé, adressage relatif, adressage de bits, etc.
2. Instructions SCM
2.1 Format d'instruction SCM
Étiquette: Opcode Mnémonique Opérande cible, Opérande source; Commentaire
Exemple:
PRINCIPAL: DÉPLACER A, # 10H; mettre 10H dans l'accumulateur
2.2 Symboles couramment utilisés dans les micro-ordinateurs monopuce
Symbole | Fonction |
---|---|
A (ACC) | Accumulateur |
B | Registres spéciaux pour multiplier et diviser les instructions |
C | Indicateur de transport ou bit de transport ou accumulateur dans le processeur booléen |
DPTR | Pointeur de données, peut être utilisé comme registre d'adresse 16 bits |
Rn (0 ~ 7) | Les huit registres de travail R0 ~ R7 de l'ensemble de registres actuel sont déterminés par RS1 et RS0 dans le PSW. |
Ri (0,1) | Deux registres disponibles pour l'adressage indirect |
# | Symbole de préfixe immédiat |
@ | Symbole de préfixe du registre de travail dans l'adressage indirect |
(X) | Contenu dans l'unité X |
$ | Représente l'adresse de l'instruction en cours |
/ | Inverse l'opérande de bit, mais n'affecte pas la valeur d'origine du bit |
3. Mode d'adressage
3.0 Résumé en premier:
3.0.1 Différents modes d'adressage
Mode d'adressage | Variables utilisées | Espace d'adressage | Explication supplémentaire |
---|---|---|---|
Adressage immédiat | #Les données | Registre du programme | Récupérer directement l'opérande après l'instruction |
Adressage direct | direct | Mémoire RAM et SFR sur puce 128B inférieure | Retirer directement le contenu de l'adresse |
Inscription adressage | R0 ~ R7, A, B, DPTR | Registre de travail et SFR partiel | Obtenez le contenu du registre directement |
Enregistrer l'adressage indirect | @ R0, @ R1, @ DPTR | RAM sur puce, RAM hors puce | Obtenez le contenu de l'adresse stockée dans le registre |
Adressage indexé | @ A + PC, @ A + DPTR | Mémoire programme | Prendre le contenu de l'adresse après avoir ajouté le contenu des deux registres |
Adressage relatif | @ PC + offset | Mémoire programme | Prenez le contenu correspondant à l'adresse après le décalage PC |
Adressage de bits | bit | Adressage de bits sur puce et SFR partiel | Prenez un peu de contenu |
3.0.2 Espace de stockage et mode d'adressage correspondant
Espace de stockage d'un micro-ordinateur monopuce
Espace de stockage | Mode d'adressage |
---|---|
Registre de travail interne 00H-1FH | Registre, direct, indirect |
Espace de bits interne 20H-2FH | Bit, direct, indirect |
RAM utilisateur interne 30H-7FH | Indirecte |
RAM utilisateur 80H-FFH interne | Indirecte |
Registre interne des fonctions d'affrètement 80H-FFH SFT | Direct, pour (une partie de) |
RAM externe | Indirecte |
Mémoire de programme ROM externe | Indexé, relatif |
3.1 Adressage immédiat
- Définition: l'opérande suit immédiatement l'opcode, est inclus dans l'octet d'instruction et est stocké dans la mémoire du programme avec l'opcode
- Exemple:
MOV A, # 52H; 52H-> A
3.2 Adressage direct
- Définition: L'adresse de la mémoire est donnée directement dans l'instruction, l'opérande est dans la mémoire
- Exemple: MOV A, 52H; (52h) -> A
3.3 Adressage des registres
- Définition: spécifiez le nom du registre, le contenu du registre est l'opérande
- Exemple:
MOV A, R0; ((R0)) -> A - Champ d'application:
i. Il y a 32 groupes de R0-R7 au total, et seulement 8 du groupe de registres actuel peuvent être utilisés à la fois
. Ii. Registres partiels de fonctions spéciales A, B, DPTR, etc.
3.4 Enregistrer l'adressage indirect
Règlements:
- 128 bits bas et 128 bits de RAM de base sur puce, utilisant indirectement @ R0, @ R1
- RAM hors puce (64 Ko): utilisez @DPTR
- RAM d'extension hors puce: si elle est inférieure à 256B, utilisez DPTR ou @ R0, @ R1 indirectement, si elle est supérieure à 256B, utilisez @DPTR
例子 :
MOV DPTR, # 3456H; 3456H-> DPTR
MOVX A, @ DPTR; ((DPTR)) -> A
3.5 Adressage indexé
- Définition: adresse de base (DPTR et PC préenregistrent l'adresse de base correspondant à l'opérande) + offset (l'accumulateur A préenregistre l'offset correspondant) comme adresse effective de l'opérande
- Exemple:
MOV A, # 22H; décalage
MOV DPTR, # 63A0H; adresse de base
MOV A, @ A + DPTR; ((A) + (DPTR)) -> A
3.6 Adressage relatif
-
Définition: L'adressage relatif prend la valeur actuelle du compteur de programme PC comme adresse de base, l'ajoute au décalage relatif rel donné dans l'instruction et utilise la somme comme adresse de branchement du programme.
Adresse cible = valeur actuelle du PC + rel = adresse de stockage des instructions + numéro d'octet d'instruction + rel
Questions nécessitant une attention:
I. La valeur PC actuelle fait référence à l'adresse de stockage de l'instruction de transfert relative plus le nombre d'octets de l'instruction, c'est-à-dire la valeur à la fin de la récupération de l'instruction de transfert relative.
ii. L'offset rel est un nombre signé sur un octet, exprimé en complément, et sa plage de valeurs est -128 ~ +127 (00H ~ FFH). Les nombres négatifs indiquent un décalage de l'adresse actuelle vers une adresse plus petite, et les nombres positifs indiquent un décalage de l'adresse actuelle vers une adresse plus grande. -
Exemple:
SJMP 08H; PC + 2 + 08H-> PC
ps:
a. Pourquoi +2, car SJMP (occupe un octet), alors 08H est pris (également un octet)
b. Le dernier 200AH est placé dans PC
Adressage de 3,7 bits
- Supplément:
bit (bit, un code binaire), octet (octet, code binaire 8 bits), mot (mot, dans des circonstances normales, deux octets par mot, 16 bits) - L'adressage des bits peut être compris comme la suppression de la valeur d'un certain bit, le formulaire spécifique a les quatre suivants
Formulaire | Des exemples | La description |
---|---|---|
Utiliser directement l'adresse de bit | MOV C, 0D5H | L'état du bit 5 (adresse de bit D5H) du PSW est envoyé à l'indicateur de bit. |
Adresse de l'unité plus numéro de bit | MOV C, 0D0H.5 | L'état du bit 5 (adresse de bit D5H) de PSW (adresse d'unité 0D0H) est envoyé au bit de drapeau de bit. |
Registre des fonctions spéciales et numéro de série | MOV C, PSW.5 | ; Envoyer l'état du bit 5 de PSW dans l'indicateur de bit. |
Représentation des noms de bits | MOV C, F0 | ; Envoyer l'état du bit 5 de PSW (adresse de bit D5H, nom de bit F0) dans le drapeau de bit. |