Td2 : architecture du 6800 et instructions - informatique in

Informatique Industrielle : TD2 : Architecture du 6800 et instructions

Télécharger PDF

TD2 : Architecture du 6800 et instructions

I / Architecture du 6800

Exercice 1

1. Quels sont les différents registres du 6800 ?

Le microprocesseur 6800 dispose des registres suivants :

  • Accumulateur A
  • Accumulateur B
  • Registre d’index X
  • Registre d’état (Condition Code Register, CCR)
  • Registre pointeur de pile (Stack Pointer, SP)
  • Program Counter (PC)

2. Quelles sont les opérations qui peuvent modifier le registre d’état (CCR) ?

Les opérations suivantes peuvent modifier le registre d’état :

  • Les instructions arithmétiques et logiques (comme ADD, SUB, AND, OR, etc.)
  • Les instructions de comparaison (CMP)
  • Les instructions de test (TST)
  • Les instructions de déplacement (comme ASL, ASR, LSR, ROR, etc.)
  • Les instructions de saut conditionnel (BCC, BCS, BEQ, BMI, etc.)
  • Les interruptions (IRQ, SWI, etc.)

3. Quelle est l’utilité du registre d’état (CCR) ?

Le registre d’état (CCR) permet de stocker les flags ou drapeaux, qui indiquent l’état du processeur après une opération. Ces flags sont utilisés pour contrôler le flux des instructions et prendre des décisions conditionnelles lors de l’exécution d’un programme.

II / Vrai ou faux ?

1. Le 6800 manipule des données de 16 bits.

Faux

2. Le 6800 manipule des adresses de 16 bits.

Vrai

3. Le bus de données est sur 08 bits et il est unidirectionnel.

Vrai

4. Le bus d’adresses est sur 08 bits et il est unidirectionnel.

Faux

III / Vrai ou faux ?

1. Le flag I se met à 1 lors de la demande d’interruption.

Faux

2. Le flag I se met à 1 après une requête d’interruption acceptée.

Vrai

3. Le flag I se met à 0 lorsqu’il n’y a pas d’interruption.

Vrai

4. Le flag I se met à 0 après une requête d’interruption acceptée.

Faux

IV / Vrai ou faux ?

Quand on réalise l’addition (FF + FF) :

1. Le résultat est : 1FE

2. Le flag C est : 1

3. Le flag I reste inchangé.

Vrai

Quand on réalise l’opération (89 + 98) :

1. Le résultat est : 22

2. Le flag C est : 0

3. Le flag I reste inchangé.

Vrai

II / Instructions du 6800

Exercice 2

1. Donner le cycle d’exécution d’une instruction.

Le cycle d’exécution d’une instruction sur le 6800 se compose généralement des étapes suivantes :

  • Récupération du code de l’instruction (fetch)
  • Décodage de l’instruction
  • Récupération des données (si nécessaire)
  • Exécution de l’instruction
  • Mise à jour des registres (PC, CCR, etc.)

2. Quelle est la forme d’une instruction en assembleur ?

Une instruction en assembleur pour le 6800 a généralement la forme suivante :

Opcode Opérande(s)

Exemple : LDAA #$FF (charger l’accumulateur A avec la valeur hexadécimale FF).

Vrai ou faux ?

Lors de l’exécution d’une instruction :

1. Le contenu de SP est copié au registre CP.

Faux

2. Le contenu de SP est envoyé sur le bus d’adresse.

Vrai

3. Le contenu de SP est envoyé sur le bus de données.

Faux

Vrai ou faux ?

Après exécution de l’instruction SBA :

1. Le contenu de A est soustrait de B.

Faux

2. Le contenu de B est soustrait du contenu de A.

Vrai

3. Le résultat n’est pas rangé dans A.

Faux

4. Le flag V est mis à 1.

Faux

Vrai ou faux ?

Après exécution de l’instruction CBA :

1. Le contenu de B est copié dans A.

Vrai

2. Le résultat est rangé dans A.

Vrai

3. Le CCR n’est pas modifié.

Vrai

4. Le flag N est mis à 1.

Faux

Vrai ou faux ?

L’instruction SWI :

1. Peut remplacer l’instruction END.

Vrai

2. Est une interruption logicielle.

Vrai

3. Est utilisée pour les sous-programmes.

Faux

4. Est utilisée pour diviser un programme très long.

Faux

Vrai ou faux ?

Après exécution de l’instruction ASR :

1. On obtient un résultat nul.

Vrai

2. Impossible d’obtenir un résultat nul.

Faux

3. On obtient FF après plusieurs utilisations de ASR.

Faux

Vrai ou faux ?

Après exécution de l’instruction ASL :

1. On obtient un résultat nul.

Faux

2. Impossible d’obtenir un résultat nul.

Vrai

3. On obtient FF après plusieurs utilisations de ASR.

Faux

Vrai ou faux ?

Après exécution de l’instruction LSR :

1. On obtient un résultat non nul.

Faux

2. Impossible d’obtenir un résultat non nul.

Faux

3. On obtient FF après plusieurs utilisations de LSR.

Faux

Exercice 3

Soit la séquence d’instructions suivante :

ASL A

ASL A

LSR A

1. Décrivez le fonctionnement de chaque instruction par un schéma.

Les schémas suivants illustrent le fonctionnement des instructions :

  • ASL A : Décalage à gauche de l’accumulateur A avec conservation du bit de poids fort et mise à jour du flag C.
  • LSR A : Décalage à droite de l’accumulateur A sans conservation du bit de poids faible et mise à jour du flag C.

2. Quel est le contenu de l’accumulateur A après exécution de la séquence précédente ?

Si l’accumulateur A contenait initialement la valeur 01 (ou tout autre exemple pertinent), le résultat après la séquence serait 01 (le décalage à gauche puis à droite revient à la valeur initiale).

3. Quelle est la valeur du flag C du registre d’état ?

Le flag C dépend de la valeur initiale de l’accumulateur A. Après un décalage à gauche, le flag C est égal au bit de poids fort de la valeur initiale. Après le décalage à droite, il est égal au bit de poids faible de la valeur obtenue après le premier ASL.

Exercice 4

Soit le code Assembleur suivant :

1. Que fait ce code ?

Ce code effectue une opération de comparaison entre les accumulateurs A et B, puis sauvegarde le résultat dans un registre ou une mémoire selon les flags du CCR.

2. Quel est le contenu des accumulateurs A, B, X et le registre d’état (CCR) après exécution ?

Le contenu dépend des valeurs initiales des registres et de la séquence d’instructions. Par exemple, si A = $12, B = $34, et X = $5678, après une instruction comme CBA, A contiendra la valeur de B, et le CCR sera mis à jour selon les flags (N, Z, C, V).

3. Écrire un code qui donnera :

Le contenu de l’accumulateur A dans XH et le contenu de l’accumulateur B dans XL.

Exemple de code :

    STAA XH      ; Sauvegarde le contenu de A dans XH
    STAB XL      ; Sauvegarde le contenu de B dans XL

Exercice 5

Écrire un programme qui permet d’effectuer les opérations suivantes :

1. Désactiver les interruptions IRQ en modifiant le registre d’état.

Code : CLI

2. Charger l’accumulateur A avec le contenu de [01F1] et l’accumulateur B avec le contenu de [01F2].

Code :

    LDAA 01F1H   ; Charge A avec le contenu de l’adresse 01F1H
    LDAB 01F2H   ; Charge B avec le contenu de l’adresse 01F2H

3. Incrémenter l’accumulateur A.

Code : INCA

4. Soustraire la valeur 05 de l’accumulateur B.

Code : SUBA #$05

5. Ranger le contenu de l’accumulateur A dans XH et le contenu de l’accumulateur B dans XL.

Code :

    STAA XH      ; Sauvegarde A dans XH
    STAB XL      ; Sauvegarde B dans XL

6. Sauvegarder le contenu du registre d’état dans [0100].

Code : STAA 0100H (à adapter selon la méthode de sauvegarde du CCR)

7. Exécuter le sous-programme dont l’adresse est indiquée par le contenu du registre d’index X.

Code : JSR [X]

8. Restituer le contenu du registre d’état.

Code : LDAA 0100H (à adapter selon la méthode de restauration du CCR)

9. Autoriser les IRQ.

Code : SEI

10. Effectuer un arrêt logiciel.

Code : SWI

FAQ

Qu’est-ce que le registre d’état (CCR) sur le 6800 ?

Le registre d’état (CCR) stocke les flags indiquant le résultat des opérations arithmétiques et logiques, comme le flag Z (zéro), N (négatif), C (report), V (débordement), et I (interruption).

Comment désactiver les interruptions IRQ sur le 6800 ?

Pour désactiver les interruptions IRQ, utilisez l’instruction CLI qui met le flag I à 0, bloquant ainsi les interruptions matérielles.

Quelle est la différence entre ASL et ASR ?

ASL effectue un décalage à gauche avec conservation du bit de poids fort, tandis que ASR effectue un décalage à droite avec conservation du bit de poids fort et mise à zéro du bit de poids faible.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne