74834257-Exercices-Assembleur-MEHDI

Telechargé par asmaeazzouzi01
Systèmes à Microprocesseurs − 6809
© Copyright 1996−2001, @Pepper's.
ED N° 1
.:: Opérations de Base ::.
P1 Création d'une table de donnéesP2 Dénombrement de données spécifiques dans une tableP3 MultiplicationP4 Détermination du maximum ou du minimum d'une tableP5 Transfert d'une table de données d'une zone mémoire vers une autreP6 Détermination logicielle de la parité croisée d'une table de donnéesP7 Tri des données d'une table
ED N° 2
.:: Opérations Arithmétiques − Conversions ::.
P1 Détection et correction d'erreursP2 Table de correspondance hexadécimal − décimalP3 Conversion DCB − binaireP4 MultiplicationP5 Division
ED N° 3
.:: Interface Parallèle PIA 6821 − Interruptions ::.
IntroductionP1 Etude des Ports Entrée / SortieP2 Etude des InterruptionsP3 Etude des Lignes de Dialogues
© Copyright 1996−2001, @Pepper's.
Systèmes à Microprocesseurs − 6809
1
P1 Création d'une table de données
Sujet
Une table de données consiste en une liste de données quelconques logées en mémoire à des adresses successives.
L'adresse de la première donnée est qualifiée d'adresse de base de la table.
Question 1
Proposer un programme permettant de ranger en mémoire dans l'ordre croissant l'ensembles des données 8 bits non
signées à partir de l'adresse de base $0100.
Commentaires
La plage des nombres non signés s'étend de $00 à $FF. Il faudra donc charger la mémoire avec ces 256 valeurs.
Programme
..:: Création d'une table de données en bits non signés ::..
ORG $0000 * Début du programme
LDX #$0100 * Début de table
LDA #$00 * 1ere données $00
Boucle STA ,X+ * Chargement et incrémentation du pointeur
CMPA #$FF * Dernière donnée = $FF alors fin de programme
BEQ Fin
INCA * Incrémentation de la donnée
BRA Boucle
Fin SWI
Etat de la mémoire après exécution du programme
0100 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0110 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
0120 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
0130 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
0140 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
0150 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
0160 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
0170 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
0180 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
0190 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
01A0 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
01B0 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
01C0 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
01D0 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
01E0 E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
01F0 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
Question 2
Systèmes à Microprocesseurs − 6809
P1 Création d'une table de données 2
Faire la même chose pour l'ensemble des données 8 bits signées à partir de l'adresse de base $0200.
Commentaires
Il faudra en premier lieu charger la mémoire avec les nombres négatifs en décrémentant de $FF à$80, puis charger les
nombres positifs en incrémentant de $00 à$7F.
Programme
..:: Création d'une table de données en bits signés ::..
ORG $0000 * Début du programme
LDX #$0200 * Début 1ere donnée négative
LDY #$0280 * Début 1ere donnée positive
LDA #$FF * 1ere donnée négative $FF
Boucle STA ,X+ * Chargement et incrémentation du pointeur X
CMPA #$80 * Si donnée = $80 fin des données négatives
BEQ Positif
DECA * Décrémentation de la donnée
BRA Boucle
Positif LDA #$00 * 1ere donnée positive
Boucle1 STA ,Y+ * Chargement et incrémentation du pointeur Y
CMPA #$7F * Si donnée = $7F fin des données positives
BEQ Fin
INCA * Incrémentation de la donnée
BRA Boucle1
Fin SWI
Etat de la mémoire après exécution du programme
0200 FF FE FD FC FB FA F9 F8 F7 F6 F5 F4 F3 F2 F1 F0
0210 EF EE ED EC EB EA E9 E8 E7 E6 E5 E4 E3 E2 E1 E0
0220 DF DE DD DC DB DA D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
0230 CF CE CD CC CB CA C9 C8 C7 C6 C5 C4 C3 C2 C1 C0
0240 BF BE BD BC BB BA B9 B8 B7 B6 B5 B4 B3 B2 B1 B0
0250 AF AE AD AC AB AA A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0260 9F 9E 9D 9C 9B 9A 99 98 97 96 95 94 93 92 91 90
0270 8F 8E 8D 8C 8B 8A 89 88 87 86 85 84 83 82 81 80
0280 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0290 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
02A0 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
02B0 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
02C0 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
02D0 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
02E0 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
02F0 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
© Copyright 1996−2000, @Pepper's.
Systèmes à Microprocesseurs − 6809
P1 Création d'une table de données 3
P2 Dénombrement de données spécifiques dans une
table
Sujet
On souhaite, dans ce problème, évaluer le nombre de données d'une table qui répondent à une même caractéristique.
Question 1
Proposer un programme permettant d'effectuer le comptage des données positives, négatives et nulles d’une table de
nombres signés de 8 bits. Le programme devra permettre de stocker ces résultats aux adresses $0050, $0051,$0052
par exemple.
Commentaires
Après avoir chargé la valeur dans le registre A, qui automatiquement positionne les bits N et Z, on peut utiliser les
instructions de branchements qui en découle.
Programme
..:: Tri de données positives, négatives ou nulle ::..
TABLE EQU $1000 * Déclaration du début de table
FIN_TAB EQU $1009 * Déclaration du pointeur de fin de table
ORG $0000 * Début du programme
LDX #TABLE * Chargement du pointeur
Boucle CMPX #FIN_TAB+1 * Si le pointeur dépasse la fin de la table
BEQ FIN * alors FIN
LDA ,X+ * Chargement et incrémentation du pointeur
BMI Negatif * Si l'opération est négative −> Négatif
BEQ Nul * Si A = 0 −> Nul
LDB >$0050 * Sinon la données est positive
INCB * Incrémente le compteur situé en $0050
STB >$0050 * On mémorise la valeur
BRA Boucle
Negatif LDB >$0051 * La données est négative
INCB * Incrémente le compteur situé en $0051
STB >$0051 * On mémorise la valeur
BRA Boucle
Nul LDB >$0052 * La données est nulle
INCB * Incrémente le compteur situé en $0052
STB >$0052 * On mémorise la valeur
BRA Boucle
FIN SWI
ORG $1000 * Début de la TABLE
FCB −1,−1,0,5,8,−7,0,−9,2,6
Etat de la mémoire après exécution du programme
Systèmes à Microprocesseurs − 6809
P2 Dénombrement de données spécifiques dans une table 4
1 / 52 100%

74834257-Exercices-Assembleur-MEHDI

Telechargé par asmaeazzouzi01
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !