Td 2 microprocesseur - informatique industrielle - télécharg

Informatique Industrielle : TD 2 Microprocesseur

Télécharger PDF

Exercices sur le Microprocesseur 6809

Exercice 1 : Détermination de la longueur d'une chaîne ASCII

La chaîne de caractères commence à l’adresse $0100 et a la structure mémoire suivante :

$0100 « E »

$0101 « N »

$0102 « S »

$0103 « A »

$0104 « F »

$0105 « CR » = $0D (le retour chariot indique la fin de la chaîne).

Le résultat, soit 5, doit être stocké dans l’accumulateur B.

Exercice 2 : Compter les octets pairs et impairs dans une table de données

Une table de données de taille 8 bits est située entre $1000 et $10FF.

Il faut réaliser un organigramme et un programme en assembleur 6809 pour :

1. Compter le nombre d’octets pairs (résultat en $0100).

2. Compter le nombre d’octets impairs (résultat en $0101).

Une table de données signées de taille 8 bits est située entre $1000 et $10FF.

Il faut réaliser un organigramme et un programme en assembleur 6809 pour :

1. Compter le nombre de données positives (supérieures ou égales à 0, résultat en $0100).

2. Compter le nombre de données négatives (inférieures à 0, résultat en $0101).

Exercice 3 : Recherche et division d'octets en mémoire

1. Réaliser un organigramme et un programme qui cherche la valeur 65 dans le RAM à partir de l’adresse $4000 et place son adresse dans le registre X une fois trouvée.

2. Réaliser un organigramme et un programme qui divise par 4 les 100 octets stockés dans les 100 cases mémoire commençant à l’adresse $4000.

Exercice 4 : Multiplication arithmétique de deux tables

Réaliser un organigramme et un programme en assembleur 6809 pour effectuer la multiplication arithmétique de deux tables TAB1 et TAB2 contenant des données de 8 bits chacune, et stocker le résultat dans une troisième table TAB3.

Adresses des tables :

TAB1 : $1000

TAB2 : $1040

TAB3 : $1080

Exercice 5 : Comparaison de deux chaînes de caractères

Donner un programme en assembleur 6809 qui compare deux chaînes de 30 caractères situées respectivement aux adresses $4000 et $6000.

Le résultat doit être placé dans l’accumulateur B comme suit :

B = 0 si égalité,

B = -1 si différentes.

Exercice 6 : Gestion des interruptions NMI et IRQ

1. Si aucune interruption n’est demandée, le microprocesseur effectue une multiplication entre les données (sur un octet) stockées à partir de l’adresse $0500 et celles stockées à partir de $0600.

2. Si la touche NMI est activée, le microprocesseur exécute un sous-programme FNMI qui effectue une addition avec retenue entre les données précédentes.

3. Si une impulsion négative est donnée sur IRQ, le microprocesseur exécute un sous-programme FIRQ qui effectue une soustraction entre les données de deux cases mémoire.

Exercice 7 : Transfert de 16 octets avec gestion des interruptions

1. Écrire un programme qui permet de transférer 16 octets de la mémoire $120 à $12F vers la mémoire $170 à $17F.

2. Si, pendant l’exécution du programme, la touche IRQ est activée, le programme est dérouté vers une routine SP_IRQ qui exécute le premier programme de l’exercice 2.

3. Si, pendant l’exécution de SP_IRQ, la touche NMI est activée, le programme est dérouté vers une routine SP_NMI qui exécute le deuxième programme de l’exercice 2.

4. Si la touche FIRQ est activée pendant l’exécution du programme de l’exercice 3, le programme en cours est dérouté vers la routine SP_FIRQ.

FAQ

1. Comment initialiser les registres avant un programme en assembleur 6809 ?

Pour initialiser les registres, utilisez des instructions comme LDX, LDY, LDA ou LDD pour charger des valeurs spécifiques dans les registres X, Y, A ou B. Par exemple, pour charger la valeur $4000 dans le registre X, utilisez :

LDX #$4000

2. Quelles sont les différences entre les interruptions NMI et IRQ sur le 6809 ?

NMI (Non-Maskable Interrupt) ne peut pas être masquée par le programme et est généralement utilisée pour des événements critiques. IRQ (Interrupt Request) peut être masquée ou désactivée par le programme et est souvent utilisée pour des interruptions conditionnelles.

3. Comment gérer une interruption dans un programme 6809 ?

Pour gérer une interruption, définissez une routine d’interruption (ISR) et utilisez l’instruction PSHX, PSHY, PSHA ou PSHB pour sauvegarder les registres avant de traiter l’interruption. À la fin, utilisez PULX, PULY, PULA ou PULB pour les restaurer.

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