Informatique Industrielle : TP3 : Programmation en 6800
Télécharger PDFTP3 : Programmation en Assembleur 6800
Exercice 1
Soit la séquence d’instructions suivante :
LDAA #$FF
ASL A
ASL A
LSR A
END
Questions
1. Quel est le contenu de l’accumulateur A après exécution ?
2. Quelle est la valeur du flag C du registre d’état ?
3. Que remarquez-vous ?
4. Charger l’accumulateur B avec la valeur #%11111111.
5. En utilisant l’instruction (ou les) de décalage adéquate(s), comment peut-on obtenir les valeurs suivantes ?
11111110 avec flag C == 1.
11111111 avec flag C == 1.
Exercice 2
Soit le programme Assembleur suivant :
; $0000 db $01
; $0001 db $02
LDX #$00D0
LDA A $00,X
LDA B $01,X
ABA
STA A $02,X
INX
CPX #$00D8
END
Questions
8. Que fait ce code ?
9. Quel est le contenu des accumulateurs A, B, X et le registre d’état (CCR) après exécution ?
A = ...................................................................
B = ...................................................................
X = ...................................................................
CCR = ..............................................................
10. Écrire un code qui donnera :
Année Universitaire : 2018/2019
Exercice 01 (Programmation)
Écrire un programme qui permet d’effectuer les opérations suivantes :
1. Ranger la valeur 3D dans la case mémoire [01F1] et FF dans la case mémoire [01F2].
2. Charger l’accumulateur A avec le contenu de [01F1] et l’accumulateur B avec le contenu de [01F2].
3. Charger le registre d’index par la valeur 01F1.
4. Incrémenter l’accumulateur A.
5. Soustraire la valeur 05 de l’accumulateur B.
6. Ranger le contenu de B dans [01F3] en utilisant le registre d’index.
Exercice 02 (Programmation)
On veut écrire un programme qui permet de transférer un bloc de données stocké en mémoire de l’adresse [0000] jusqu’à [0003] vers l’emplacement mémoire allant de [0008] jusqu’à [000B].
Questions
1. Proposer un programme Assembleur.
2. Proposer un deuxième programme qui utilise la pile.
FAQ
Q : Qu’est-ce que le flag C dans le registre d’état du 6800 ?
R : Le flag C (Carry) indique si un report ou une retenue s’est produit lors d’une opération arithmétique ou logique. Il est modifié par des instructions comme ASL, LSR, ROL, ROR, etc.
Q : À quoi sert l’instruction ASL dans le 6800 ?
R : ASL (Arithmetic Shift Left) décale les bits d’un registre vers la gauche. Le bit le plus significatif est copié dans le flag C, et le bit le moins significatif est mis à zéro. Cela permet de multiplier une valeur par 2.
Q : Comment utiliser la pile pour transférer des données en Assembleur 6800 ?
R : La pile est utilisée via les instructions TSX (Transfert Stack Pointer to Index Register), TXS (Transfert Index Register to Stack Pointer), PHA (Push Accumulator), PLA (Pull Accumulator), etc. Pour transférer des données avec la pile, il faut empiler les valeurs de la source puis les dépiler vers la destination.