Informatique Industrielle : TD3 : Modes d’adressage
Télécharger PDFExercice 1 : Vrai ou Faux sur les Modes d'Adressage Immédiat
Dans l’adressage immédiat :
- 1. Faux : Les registres de données ne reçoivent pas directement la valeur de l’opérande.
- 2. Faux : Les registres d’adresses ne reçoivent jamais la valeur de l’opérande dans ce mode.
- 3. Faux : Le registre d’index ne reçoit pas une adresse comme valeur.
- 4. Vrai : L’accumulateur A reçoit une donnée comme valeur.
- 1. Vrai : La présence du $ est facultative, mais elle indique clairement qu’il s’agit d’une valeur hexadécimale.
- 2. Vrai : Le passage par la mémoire n’est pas nécessaire, car la valeur est directement incluse dans l’instruction.
- 3. Vrai : Le registre reçoit un opérande de même taille (8 bits ou 16 bits selon le processeur).
- 4. Vrai : L’opérande peut être sur 8 bits ou 16 bits selon le processeur et l’instruction.
- 1. Faux : La présence du # est obligatoire pour indiquer le mode d’adressage immédiat.
- 2. Faux : Le passage par la mémoire n’est pas nécessaire dans ce mode.
- 3. Vrai : Le registre reçoit un opérande de même nature (donnée ou adresse selon le contexte).
Exercice 2 : Analyse des Instructions avec Modes d'Adressage
Voici le mode d’adressage, le contenu des registres, la nature de l’opérande, et les remarques pour chaque instruction :
| Instruction | Mode d'Adressage | Contenu du Registre | Nature de l'Opérande | Changement en Mémoire ? | Remarque sur la Taille |
|---|---|---|---|---|---|
| ADD A #17 | Immédiat | A = A + 17 | Donnée (8 bits) | Non | Opérande sur 8 bits, registre A sur 8 bits. |
| LDX #CD12 | Immédiat | X = CD12 | Adresse (16 bits) | Non | Opérande sur 16 bits, registre X sur 16 bits. |
| LDA B A21F | Direct | A = valeur à l’adresse A21F | Donnée (8 ou 16 bits) | Non | Adresse sur 16 bits, donnée sur 8 ou 16 bits selon le processeur. |
| LDA B X, 07 | Indexé avec décalage | A = valeur à l’adresse X + 07 | Donnée (8 ou 16 bits) | Non | Adresse calculée sur 16 bits, donnée sur 8 ou 16 bits. |
| BRA étiquette | Relative | - | Adresse (8 bits) | Non | Décalage sur 8 bits, saut relatif. |
| ADD B #00 | Immédiat | B = B + 00 | Donnée (8 bits) | Non | Opérande sur 8 bits, registre B sur 8 bits. |
| LDA A #25 | Immédiat | A = 25 | Donnée (8 bits) | Non | Opérande sur 8 bits, registre A sur 8 bits. |
| LDX #0025 | Immédiat | X = 0025 | Adresse (16 bits) | Non | Opérande sur 16 bits, registre X sur 16 bits. |
| LDS #0025 | Immédiat | S = 0025 | Adresse (16 bits) | Non | Opérande sur 16 bits, registre S (pointeur de pile) sur 16 bits. |
| LDA A 25 | Direct | A = valeur à l’adresse 25 | Donnée (8 bits) | Non | Adresse sur 16 bits (si processeur le permet), donnée sur 8 bits. |
| LDA A 1125 | Direct (ou étendu selon contexte) | A = valeur à l’adresse 1125 | Donnée (8 ou 16 bits) | Non | Adresse sur 16 bits, donnée sur 8 ou 16 bits. |
| LDX 1125 | Direct (ou étendu) | X = valeur à l’adresse 1125 | Adresse (16 bits) | Non | Adresse sur 16 bits, registre X sur 16 bits. |
| LDS 1125 | Direct (ou étendu) | S = valeur à l’adresse 1125 | Adresse (16 bits) | Non | Adresse sur 16 bits, registre S sur 16 bits. |
| ADD A 1123 | Direct (ou étendu) | A = A + valeur à l’adresse 1123 | Donnée (8 bits) | Non | Adresse sur 16 bits, donnée sur 8 bits. |
| SUB B #21 | Immédiat | B = B - 21 | Donnée (8 bits) | Non | Opérande sur 8 bits, registre B sur 8 bits. |
| PUSH A | Implicite | Pointeur de pile SP = SP - 1, valeur A empilée à l’adresse SP | Donnée (8 bits) | Oui (empilement) | Registre A sur 8 bits, pile modifiée. |
Exercice 3 : Analyse du Programme
1. Description des instructions :
- LDA A EE, X : Charge le registre A avec la valeur à l’adresse EE + X (mode indexé).
- ADD A #AB : Ajoute la valeur AB (immédiate) au contenu de A.
- LDX #00F1 : Charge le registre X avec l’adresse 00F1 (immédiate).
- PUSH B : Empile le contenu du registre B sur la pile.
- PUSH A : Empile le contenu du registre A sur la pile.
- LDA B 00F6 : Charge le registre B avec la valeur à l’adresse mémoire 00F6 (direct).
- SBA : Soustrait le contenu de A du contenu de B et stocke le résultat dans B.
- SWI : Interruption logicielle (arrêt du programme).
- LDX 00F2 : Charge le registre X avec la valeur à l’adresse mémoire 00F2 (direct).
- ADD A F0, X : Ajoute la valeur à l’adresse F0 + X au contenu de A.
- PUL A : Déempile la valeur du sommet de la pile dans le registre A.
- PUL B : Déempile la valeur du sommet de la pile dans le registre B.
- SBA : Soustrait le contenu de A du contenu de B et stocke le résultat dans B.
2. Contenu des registres après exécution :
- X : 00F2 (après LDX 00F2).
- B : Résultat de SBA (valeur modifiée après déempilement).
- A : Résultat de ADD A F0, X (valeur modifiée après déempilement).
- Pointeur de pile SP : Décrémenté de 2 après les deux PUSH (si initial à 00F3, final à 00F1).
FAQ
- Qu’est-ce que le mode d’adressage immédiat ?
La valeur de l’opérande est directement incluse dans l’instruction, sans accès à la mémoire. Exemple :
LDA A #25. - Comment interpréter l’adressage indexé ?
L’adresse effective est calculée en ajoutant un décalage au contenu d’un registre d’index. Exemple :
LDA A EE, Xutilise X comme index. - Quelle est la différence entre PUSH et PUL ?
PUSHempile une valeur sur la pile,PULdéempile une valeur depuis la pile vers un registre.